gpt4 book ai didi

python - 将 "informal"月日索引转换为日期时间索引

转载 作者:行者123 更新时间:2023-12-05 07:44:03 28 4
gpt4 key购买 nike

我有一个系列,其索引采用月-日格式。它不是正式的日期时间索引。此外,该系列包含一年中每一天的一个数据:

       Data_Value
01-01 156
01-02 139
01-03 133
01-04 106
01-05 128
01-06 189

我的目标是制作一个线图,y 轴为“Data_Value”,x 轴为十二个月。但我想绘制 365 数据,而不是将它们汇总为 12 个月。像这样:

enter image description here

无论如何,我的第一个 Action 是绘制 365 数据,忽略将月份名称放在 x 轴上的事实:

s = np.array(s)
plt.figure()
plt.plot(s, '-o')

但在最后一条命令中我收到错误“ValueError:无法将字符串转换为 float :'12-31'”。

有人知道如何将“非正式”月日索引转换为省略年份的日期时间索引吗?或者任何其他解决方案来达到我绘制系列的最终目标?谢谢。

最佳答案

您可以使用:

np.random.seed(100)
rng = pd.date_range('2017-01-01', periods=365).strftime('%m-%d')
df = pd.DataFrame({ 'Data_value': np.random.randint(1000, size=365)}, index=rng)
#print (df)
d = {'01':'Jan', '02':'Feb', '03':'Mar','04': 'Apr', '05':'May','06': 'Jun', 
'07':'Jul', '08':'Aug','09': 'Sep','10': 'Oct', '11':'Nov','12': 'Dec'}

#add _for match only first value of string to dict
d = {'_' + k:v for k, v in d.items()}

#add _ to index
df.index = '_' + df.index
#split values by - to MultiIndex
df.index = df.index.str.split('-', expand=True)

#reshape and replace NaN to 0
df = df['Data_value'].unstack(fill_value=0)
#rename index values by dict
df = df.rename(index=d)
print (df)
01 02 03 04 05 06 07 08 09 10 ... 22 23 24 \
Jan 520 792 835 871 855 79 944 906 350 948 ... 316 570 912
Feb 900 415 897 141 757 723 612 4 603 955 ... 2 889 617
Mar 181 283 824 238 369 926 944 303 679 877 ... 618 30 17
Apr 693 846 0 13 185 460 362 131 582 643 ... 811 36 773
May 852 95 626 749 631 76 801 314 102 938 ... 419 407 765
Jun 677 870 122 628 186 295 619 734 819 286 ... 16 524 854
Jul 138 776 473 712 414 908 658 349 887 604 ... 389 435 346
Aug 385 14 883 289 148 168 536 477 442 796 ... 730 250 477
Sep 82 998 401 906 653 593 885 793 194 655 ... 944 754 506
Oct 144 819 182 183 83 502 356 554 957 760 ... 70 309 994
Nov 674 131 870 139 305 797 804 861 451 922 ... 723 119 71
Dec 781 304 466 544 294 296 497 693 93 398 ... 915 716 322

25 26 27 28 29 30 31
Jan 507 649 93 86 386 667 876
Feb 478 403 994 63 0 0 0
Mar 53 68 946 488 347 475 979
Apr 839 38 214 94 738 170 0
May 521 944 496 789 409 438 262
Jun 466 621 67 220 223 788 0
Jul 34 451 862 974 694 77 212
Aug 736 74 437 798 67 668 933
Sep 693 657 705 298 861 172 0
Oct 736 943 944 905 689 821 879
Nov 829 93 498 804 123 554 0
Dec 141 87 65 324 182 640 343

[12 rows x 31 columns]

最后DataFrame.plot :

df.plot()

关于python - 将 "informal"月日索引转换为日期时间索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43178770/

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