Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从时间戳SQL导出按行业分组的月度熊猫线图_Python_Python 3.x_Pandas_Matplotlib_Timestamp - Fatal编程技术网

Python 从时间戳SQL导出按行业分组的月度熊猫线图

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

新手提问,提前谢谢

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

我在一个有时间戳的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-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()

这是非常接近-我希望将日期分组到每个行业的每月总数,并以这种方式生成一个图表。你知道我怎么做吗?谢谢我已经编辑了我的解决方案来绘制每月的总数,希望它有用!