gpt4 book ai didi

python - 在 Pandas 中创建一个包含所有日期的图

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:26 25 4
gpt4 key购买 nike

我需要创建一个包含多个列的数据框图。我将在 x 轴上显示日期。怎么可能在一个地 block 上有所有日期?现在我的数据以每五个月一次的周期显示。在某些列中,数据非常小,但对我来说非常重要的是它们在图上可见。我的数据框看起来像这样。

    date      col1        col2      col3     col4        col5        col6
20.05.2016 1091,06 12932,31 0 9343,334 23913,74 0
27.05.2016 1086,66 11845,64 0 9786,654 23913,74 0
03.06.2016 1083,04 10762,59 0 9786,654 23913,74 0
10.06.2016 1083,96 9678,630 4000 9786,654 23913,74 0
17.06.2016 1087,31 22718,40 0 9786,654 23913,74 1412
24.06.2016 1089,78 21628,62 0 9786,654 23828,96 0
01.07.2016 1083,70 20544,92 0 9749,567 23828,96 0
08.07.2016 1081,92 19463 0 9749,567 23828,96 0
...

我的代码是这样的:

df.plot(figsize=(20,10), x='date', y=['col1', 'col2', 'col3', 'col4', 'col5', 'col6'])

plt.show()

如有任何建议,我将不胜感激。

最佳答案

第一次使用set_index然后如果需要子集 [] 如果需要按名称过滤列:

cols = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6']
df.set_index('date')[cols].plot(figsize=(20,10))

并且对于 df 的所有列都忽略它:

df.set_index('date').plot(figsize=(20,10))

但如果需要所有不带 0 的列,请使用 boolean indexingloc并按 ne 过滤所有列(!=) 和 all对于每列的所有 True:

#replace decimals , to . and then to floats, check notice for another solution 

df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('date').replace(',', '.', regex=True).astype(float)

print (df.ne(0))
col1 col2 col3 col4 col5 col6
date
2016-05-20 True True False True True False
2016-05-27 True True False True True False
2016-03-06 True True False True True False
2016-10-06 True True True True True False
2016-06-17 True True False True True True
2016-06-24 True True False True True False
2016-01-07 True True False True True False
2016-08-07 True True False True True False

print (df.ne(0).all())
col1 True
col2 True
col3 False
col4 True
col5 True
col6 False
dtype: bool

df = df.loc[:, df.ne(0).all()]
print (df)
col1 col2 col4 col5
date
2016-05-20 1091.06 12932.31 9343.334 23913.74
2016-05-27 1086.66 11845.64 9786.654 23913.74
2016-03-06 1083.04 10762.59 9786.654 23913.74
2016-10-06 1083.96 9678.63 9786.654 23913.74
2016-06-17 1087.31 22718.40 9786.654 23913.74
2016-06-24 1089.78 21628.62 9786.654 23828.96
2016-01-07 1083.70 20544.92 9749.567 23828.96
2016-08-07 1081.92 19463.00 9749.567 23828.96


df.plot(figsize=(20,10))

注意:

小数也有问题,所以read_csv中需要参数decimal或将 replace 为上面解决方案中使用的 astype:

df = pd.read_csv('filename', index_col=['date'], decimal=',', parse_dates=['date'])

print (df)
col1 col2 col3 col4 col5 col6
date
2016-05-20 1091.06 12932.31 0 9343.334 23913.74 0
2016-05-27 1086.66 11845.64 0 9786.654 23913.74 0
2016-03-06 1083.04 10762.59 0 9786.654 23913.74 0
2016-10-06 1083.96 9678.63 4000 9786.654 23913.74 0
2016-06-17 1087.31 22718.40 0 9786.654 23913.74 1412
2016-06-24 1089.78 21628.62 0 9786.654 23828.96 0
2016-01-07 1083.70 20544.92 0 9749.567 23828.96 0
2016-08-07 1081.92 19463.00 0 9749.567 23828.96 0

关于python - 在 Pandas 中创建一个包含所有日期的图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45302680/

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