gpt4 book ai didi

python - 如何有效地循环pandas中的日期列

转载 作者:行者123 更新时间:2023-12-02 19:22:51 25 4
gpt4 key购买 nike

我有一个大型数据集,其中列的索引具有日期格式。为了解释我的问题,我正在构建一个类似的数据集,如下所示:

将 pandas 导入为 pd

Cities = ['San Francisco', 'Los Angeles', 'New York', 'Huston', 'Chicago']
Jan = [10, 20, 15, 10, 35]
Feb = [12, 23, 17, 15, 41]
Mar = [15, 29, 21, 21, 53]
Apr = [27, 48, 56, 49, 73]

data = pd.DataFrame({'City': Cities, '01/01/20': Jan, '02/01/20': Feb, '03/01/20': Mar, '04/01/20': Apr})

print (data)

City 01/01/20 02/01/20 03/01/20 04/01/20
0 San Francisco 10 12 15 27
1 Los Angeles 20 23 29 48
2 New York 15 17 21 56
3 Huston 10 15 21 49
4 Chicago 35 41 53 73

我想将每个城市的数据绘制为时间的函数。这是我的尝试:

import matplotlib.pyplot as plt 

cols = data.columns

dates = data.loc[:, cols[1:]].columns

San_Francisco = []
Los_Angeles = []
New_York = []
Huston = []
Chicago = []

for i in dates:
San_Francisco.append(data[data['City'] == 'San Francisco'][i].sum())
Los_Angeles.append(data[data['City'] == 'Los Angeles'][i].sum())
New_York.append(data[data['City'] == 'New York'][i].sum())
Huston.append(data[data['City'] == 'Huston'][i].sum())
Chicago.append(data[data['City'] == 'Chicago'][i].sum())

plt.plot(dates, San_Francisco, label='San Francisco')
plt.plot(dates, Los_Angeles, label='Los Angeles')
plt.plot(dates, New_York, label='New York')
plt.plot(dates, Huston, label='Huston')
plt.plot(dates, Chicago, label='Chicago')
plt.legend()

结果是我想要的,但是,对于大型数据集,我的方法效率不高。我怎样才能加快速度?另外,对于绘图部分,我有一大排城市,手动对名称进行硬编码非常乏味;有更好的办法吗?

谢谢

最佳答案

如果可能,City 的某些值将首先由 GroupBy.sum 重复聚合,然后转置 DataFrame.T最后一次绘制 DataFrame.plot :

data.groupby('City').sum().T.plot()

graph

如果City列始终具有唯一值,则可以使用DataFrame.set_index :

data.set_index("City").T.plot()

编辑:

df = data.groupby('City').sum().T

N = 10
df.groupby(np.arange(len(df.columns)) // N, axis=1).plot()

关于python - 如何有效地循环pandas中的日期列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62807899/

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