Наложение происходит каждый день в одном графике - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть 2 панды DataFrames, состоящие из записей, с датами. Я пытаюсь составить график для каждого дня, количество записей, которые были сделаны в этот день, на одном графике с разными цветами:

def plotMultiple(dfList):
    for df in dfList:
        times = pd.DatetimeIndex(df.Date)
        grouped = df.groupby([times.year, times.month]).size()
        ax = grouped.plot(kind='line', x='Date', figsize=(50, 5))

df1 = pd.DataFrame({"Date":[
"21.11.2018 14:44",
"21.12.2018 14:43",
"22.12.2018 14:42",
"25.12.2018 14:51"]}
)
df1.head()

df2 = pd.DataFrame({"Date":[
"20.12.2018 14:44",
"21.12.2018 14:44",
"21.12.2018 14:43",
"22.12.2018 14:42",
"21.12.2018 14:43",
"22.12.2018 14:42",
"21.12.2018 14:43",
"22.12.2018 14:42",
"23.12.2018 14:51"]}
)

plotMultiple([df2,df1])

Это прекрасно работает, если я передаю массив, состоящий из одного фрейма данных, но как только их становится несколько, возникают проблемы. График начинается не с первой записи, а с некоторой случайной точки:

Пример

Как видно, график не начинается и не заканчивается при первой записи. Как я могу сделать это с 21 ноября по 25 декабря? Я в порядке с использованием и pyplot и seaborn.

1 Ответ

0 голосов
/ 17 апреля 2019

Используйте Counter из коллекций для подсчета всех случаев каждой даты.

import pandas as pd
import os
import matplotlib.pyplot as plt

from collections import Counter

df = pd.DataFrame({"Date":[
"20.12.2018 14:44",
"21.12.2018 14:44",
"21.12.2018 14:43",
"22.12.2018 14:42",
"21.12.2018 14:43",
"22.12.2018 14:42",
"21.12.2018 14:43",
"22.12.2018 14:42",
"23.12.2018 14:51"]}
)

date_count = Counter(df['Date'])

plt.plot(date_count.keys(), date_count.values())
plt.xticks(rotation=45)

# Repeat with different dataset and use `plt.plot()` at the end

# plt.plot(date_count.keys(), date_count.values())
# plt.xticks(rotation=45)

plt.show()

enter image description here

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