我没有发布很多问题,但是,我发现了一个非常奇怪的行为,导致交替输出。我希望有人能对此有所帮助。
我正在使用jupyter,并且正在创建一些像这样的数据:
# Use the following data for this assignment:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
np.random.seed(12345)
df = pd.DataFrame([np.random.normal(32000,200000,3650),
np.random.normal(43000,100000,3650),
np.random.normal(43500,140000,3650),
np.random.normal(48000,70000,3650)],
index=[1992,1993,1994,1995])
df
现在在下一个单元格中,我有两行代码来获取DF的转置,然后获取均值和标准差。但是,当我多次运行此单元格时,似乎从.mean()获得不同的输出
df = df.T
values = df.mean(axis=0)
std = df.std(axis=0)
values
我正在使用shift Enter运行第二个单元格,这就是我要得到的:
1992 33312.107476 1993 41861.859541 1994 39493.304941 1995 47743.550969 dtype: float64
当我再次使用shift +输入运行单元格时(输出会被截断,但您应该明白了)
0 5447.716574 1 126449.084350 2 41091.469083 3 -61754.197831 4 223744.364842 5 94746.779056 6 57607.078825 7 109812.089923 8 28283.060354 9 69768.157194 10 32952.030326 11 40222.026635 12 64786.632304 13 17025.266684 14 111334.168830 15 96067.788206 16 -68157.985363
我尝试更改axis参数并删除axis参数,但输出保持不变
如果有人有兴趣复制我所做的事情,以下是屏幕截图:
感谢阅读。
答案 0 :(得分:3)
您的问题是,在第二个单元格中,您将df
重新分配为df.T
,因此每次它都会重新转换数据帧。因此,您可以做的是:不要使用df = df.T
,只需说一遍:
values = df.T.mean(axis=0)
std = df.T.std(axis=0)
甚至更好的是,使用axis=1
(将其应用于列而不是行)而不进行转置:
values = df.mean(axis=1)
std = df.std(axis=1)
答案 1 :(得分:1)
您可以使用describe
df.T.describe()
Out[267]:
1992 1993 1994 1995
count 3650.000000 3650.000000 3650.000000 3650.000000
mean 34922.760627 41574.363827 43186.197526 49355.777683
std 200618.445749 98495.601455 140639.407130 70408.448642
min -632057.636640 -292484.131067 -435217.159232 -181304.694667
25% -98715.272565 -24771.835741 -49460.639563 -973.422386
50% 34446.219184 41474.621854 43323.557410 49281.270881
75% 170722.706967 107502.446843 136286.933017 97422.070284
max 714855.084396 453834.306915 516751.566696 295427.273677