Даты составления графиков с суммой значений - PullRequest
0 голосов
/ 21 мая 2019

Я хотел бы нанести на график дату информационного кадра вместе с количеством I или O, которые произошли в эту дату. Например, если бы у нас было 100 I всего 18.05.2009, то ось x была бы 18.05.2009, а ось y была бы 100 для этой даты.

Я пытался строить с помощью value_counts () и других типов графиков, но не получил того, что мне было нужно, как указано выше. Это часть данных, которые у меня есть. Первый столбец - это индекс, второй столбец - это дата, а третий столбец - это я.

0   2019-05-18  I
1   2019-05-18  I
2   2019-05-18  I
3   2019-05-18  I
4   2019-05-18  I
5   2019-05-18  I
6   2019-05-17  I
7   2019-05-17  I
8   2019-05-17  I
9   2019-05-17  I
10  2019-05-17  I
11  2019-05-17  I
12  2019-05-17  I
13  2019-05-17  I
14  2019-05-16  I
15  2019-05-16  I
16  2019-05-16  I
17  2019-05-16  I
18  2019-05-16  I

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Вот решение, которое создает гистограммы с накоплением

import pandas as pd 
import matplotlib.pyplot as plt

dict = { "date": ["2019-05-18", "2019-05-18","2019-05-18","2019-05-18","2019-05-18",
                  "2019-05-18","2019-05-17","2019-05-17","2019-05-17","2019-05-17",
                  "2019-05-17","2019-05-17","2019-05-17","2019-05-17","2019-05-16",
                  "2019-05-16","2019-05-16","2019-05-16","2019-05-16"],
          "letter" : ["I","I", "O","I","O","I","I","I","I","I","I","I","I","O","I","I", "O", "O", "O"] }

df = pd.DataFrame(dict)

df_count = pd.crosstab(df["date"], df["letter"])

df_count.plot.bar(stacked=True)
plt.legend(title='Counts')
plt.ylabel('Date')
plt.show()
0 голосов
/ 21 мая 2019

Вы ищете групповой и счет.

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

df = pd.DataFrame({'date': ['18-05-2019', '18-05-2019', '19-05-2019', '19-05-2019'], 'is_i': ['I', 'O', 'I', 'U']})
df['date'] = pd.to_datetime(df['date'], format='%d-%m-%Y')

# Groupby for counts - filter however you want
counts_df = df[df['is_i'].isin(['I', 'O'])].groupby('date').count()

# Plot
fig, ax = plt.subplots()
ax.plot(counts_df.index, counts_df['is_i'])

# Format x ticks
datesFmt = mdates.DateFormatter('%d-%m-%Y')
ax.xaxis.set_major_formatter(datesFmt)
ax.set_xticks(counts_df.index)

plt.show()

Plot with reasonable xticks

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...