我有以下数据框:
Year Month Value
2005 9 1127.080000
2016 3 9399.000000
5 3325.000000
6 120.000000
7 40.450000
9 3903.470000
10 2718.670000
12 12108501.620000
2017 1 981879341.949982
2 500474730.739911
3 347482199.470025
4 1381423726.830030
5 726155254.759981
6 750914893.859959
7 299991712.719955
8 133495941.729959
9 27040614303.435833
10 26072052.099796
11 956680303.349909
12 755353561.609832
2018 1 1201358930.319930
2 727311331.659607
3 183254376.299662
4 9096130.550197
5 972474788.569924
6 779912460.479959
7 1062566320.859962
8 293262028544467.687500
9 234792487863.501495
如您所见,我按月和年分组有一些巨大的价值。我的问题是我想创建一个线条图,但是当我这样做时,对我来说没有任何意义:
df.plot(kind = 'line', figsize = (20,10))
考虑到值在数月和数年内波动,以视觉方式显示数据没有多大意义,但是在大部分时间段中显示为一条平线,而在最后阶段则显示一个大峰值。
我想问题可能出在y轴刻度上,无法正确拟合数据。我试图将对数转换应用于y轴,但这并未添加任何更改,我还试图将0到1之间的数据归一化只是为了进行测试,但该图仍然相同。关于如何在一段时间内更准确地表示我的数据的任何想法?而且,如何在x轴上显示月份和年份的名称?
编辑:
这是我应用对数变换的方式:
df.plot(kind = 'line', figsize = (20,10), logy = True)
这是结果:
对我来说,考虑到绘制的值代表了一段时间内的收入,该图仍然无法真正理解,对我而言,对数值进行对数转换对我来说意义不大。
这是我如何标准化数据:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df_scaled = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
df_scaled.set_index(df.index, inplace = True)
然后我将其绘制:
df_scaled.plot(kind = 'line', figsize = (20, 10), logy = True)
正如您所看到的,这种情况似乎有所改变,我对于如何在给定的时间段内正确地可视化这些数据有些困惑。