向 Pandas describe() 方法添加范围

Nou*_*our 2 python nan dataframe pandas

我正在尝试这样做

这是 Pandas 的原始描述方法

       sepal_len    sepal_wid   petal_len   petal_wid
count   5.000000    5.000000    5.000000    5.0
mean    4.860000    3.280000    1.400000    0.2
std     0.207364    0.258844    0.070711    0.0
min     4.600000    3.000000    1.300000    0.2
25%     4.700000    3.100000    1.400000    0.2
50%     4.900000    3.200000    1.400000    0.2
75%     5.000000    3.500000    1.400000    0.2
max     5.100000    3.600000    1.500000    0.2
Run Code Online (Sandbox Code Playgroud)

我需要在描述方法中添加范围行

range   0.5          0.60        0.19       0.0
Run Code Online (Sandbox Code Playgroud)
       sepal_len    sepal_wid   petal_len   petal_wid
count   5.000000    5.000000    5.000000    5.0
mean    4.860000    3.280000    1.400000    0.2
std     0.207364    0.258844    0.070711    0.0
min     4.600000    3.000000    1.300000    0.2
25%     4.700000    3.100000    1.400000    0.2
50%     4.900000    3.200000    1.400000    0.2
75%     5.000000    3.500000    1.400000    0.2
max     5.100000    3.600000    1.500000    0.2
range   0.5          0.60        0.19       0.0
Run Code Online (Sandbox Code Playgroud)

我做了以下代码

ds = data.head().describe()
rangelist = [];
for d in range(4):
    Max = ( ds.iloc[:,d].loc['max']) 
    Min = ( ds.iloc[:,d].loc['min']) 
    rangelist.append(Max-Min)

ds.append(rangelist)
Run Code Online (Sandbox Code Playgroud)

输出给我的是列值而不是行值

0       petal_len   petal_wid   sepal_len   sepal_wid
count   NaN 5.000000    5.0 5.000000    5.000000
mean    NaN 1.400000    0.2 4.860000    3.280000
std     NaN 0.070711    0.0 0.207364    0.258844
min     NaN 1.300000    0.2 4.600000    3.000000
25%     NaN 1.400000    0.2 4.700000    3.100000
50%     NaN 1.400000    0.2 4.900000    3.200000
75%     NaN 1.400000    0.2 5.000000    3.500000
max     NaN 1.500000    0.2 5.100000    3.600000
0       0.5  NaN        NaN    NaN       NaN
1       0.6  NaN        NaN    NaN       NaN
2       0.2  NaN        NaN    NaN       NaN
3       0.0  NaN        NaN    NaN       NaN
Run Code Online (Sandbox Code Playgroud)

Ben*_*n.T 5

你可以用loc一行来做

ds.loc['range'] = ds.loc['max'] - ds.loc['min']
print(ds)
       sepal_len  sepal_wid  petal_len  petal_wid
count   5.000000   5.000000   5.000000        5.0
mean    4.860000   3.280000   1.400000        0.2
std     0.207364   0.258844   0.070711        0.0
min     4.600000   3.000000   1.300000        0.2
25%     4.700000   3.100000   1.400000        0.2
50%     4.900000   3.200000   1.400000        0.2
75%     5.000000   3.500000   1.400000        0.2
max     5.100000   3.600000   1.500000        0.2
range   0.500000   0.600000   0.200000        0.0
Run Code Online (Sandbox Code Playgroud)

  • @AhmedNour Pandas 几乎执行所有对齐索引的操作,包括数据帧索引和列标题。所以,是的,对于所有列, df.loc['max'] 会转换为 df.loc['max', :] ,同样,对于 df.loc['min'] ,pandas 会自动减去对齐列标题。 (2认同)