python - Pandas 线图(按月),按带有时间戳的 SQL 导出的行业分组

标签 python python-3.x pandas matplotlib timestamp

新手问题,先谢谢你了!

我尝试按日期和行业对数据进行分组,并显示一个图表,该图表显示整个时间序列中不同行业的收入数字(按月增量)。

我正在处理带有时间戳的 SQL 导出,需要花很多时间才能使其正常工作。

在此处发布示例 csv 数据文件: https://drive.google.com/open?id=0B4xdnV0LFZI1WGRMN3AyU2JERVU

这是一个小数据示例:

Industry     Date                Revenue
Fast Food   01-05-2016 12:18:02  100
Fine Dining 01-08-2016 09:17:48  110
Carnivals   01-18-2016 10:48:52  200

我失败的尝试在这里:

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

df = pd.read_csv('2012_to_12_27_2016.csv')

df['Ship_Date'] = pd.to_datetime(df['Ship_Date'], errors = 'coerce')
df['Year'] =  df.Ship_Date.dt.year
df['Ship_Date'] =  pd.DatetimeIndex(df.Ship_Date).normalize()
df.index = df['Ship_Date']
df_skinny = df[['Shipment_Piece_Revenue', 'Industry']]

groups = df_skinny[['Shipment_Piece_Revenue', 'Industry']].groupby('Industry')
groups = groups.resample('M').sum()
groups.index = df['Ship_Date']

fig, ax = plt.subplots()
groups.plot(ax=ax, legend=False)
names = [item[0] for item in groups]
ax.legend(ax.lines, names, loc='best')

plt.show()

最佳答案

您可以使用DataFrame.Series.unique获取所有行业的列表,然后使用DataFrame.loc定义一个新的DataFrame > 仅包含来自单个行业的数据的对象。

然后如果我们将Ship Date列设置为新DataFrame的索引,我们可以使用DataFrame.resample,指定频率以月份为单位,并调用 sum() 来获取该月的总收入。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('Graph_Sample_Data.csv')
df['Ship Date'] = pd.to_datetime(df['Ship Date'], errors='coerce')

fig, ax = plt.subplots()

for industry in df.Industry.unique():
    industry_df = df.loc[df.Industry == industry]
    industry_df.index = industry_df['Ship Date']
    industry_df = industry_df.resample('M').sum()
    industry_df.plot(x=industry_df.index, 
                     y='Revenue', 
                     ax=ax,
                     label=industry)

plt.show()

关于python - Pandas 线图(按月),按带有时间戳的 SQL 导出的行业分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41982084/

相关文章:

python - 如何将属性或对象注入(inject)到 Django Rest Framework 中的 View 中?

python - 使用 App Engine django 补丁提供简单图像?

python - 为什么我的 pygame Sprite 左边比右边快?

Python - 计算从条件之后开始的值的平均值(例如,在另一列中的第一个非零之后)

python - 意外的 pandas 广播行为

python - Pandas 操纵工作日日期范围的频率

python - 我将如何打包和销售 Django 应用程序?

python - 如何将 UTF-8 转换为转义字符串

python - 遍历 numpy 数组以填充 python 列表

python - BeautifulSoup 获取多页文本