gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 03:20:25 25 4
gpt4 key购买 nike

新手问题,先谢谢你了!

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

我正在处理带有时间戳的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com