Python 从时间戳SQL导出按行业分组的月度熊猫线图
新手提问,提前谢谢 我试图按日期和行业对数据进行分组,并显示一个图表,以每月增量显示时间序列中不同的行业收入数字 我在一个有时间戳的SQL导出中工作,要花很长时间才能让它工作 已在此处发布示例csv数据文件: 下面是一个小数据示例:Python 从时间戳SQL导出按行业分组的月度熊猫线图,python,python-3.x,pandas,matplotlib,timestamp,Python,Python 3.x,Pandas,Matplotlib,Timestamp,新手提问,提前谢谢 我试图按日期和行业对数据进行分组,并显示一个图表,以每月增量显示时间序列中不同的行业收入数字 我在一个有时间戳的SQL导出中工作,要花很长时间才能让它工作 已在此处发布示例csv数据文件: 下面是一个小数据示例: Industry Date Revenue Fast Food 01-05-2016 12:18:02 100 Fine Dining 01-08-2016 09:17:48 110 Carnivals 01-18
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
对象,该对象仅包含单个行业的数据
然后,如果我们将发货日期
列设置为新的数据帧
的索引,我们可以使用数据帧。重新采样
,将频率指定为月份,并调用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()
这是非常接近-我希望将日期分组到每个行业的每月总数,并以这种方式生成一个图表。你知道我怎么做吗?谢谢我已经编辑了我的解决方案来绘制每月的总数,希望它有用!