Pandas常用计算函数

Pandas常用计算函数

学习目标

  • 知道排序函数nlargest、nsmallest和sort_values的用法
  • 知道Pandas中求和、计数、相关性值、最小、最大、平均数、标准偏差、分位数的函数使用

1 排序函数

  • 导包并加载数据集

    import pandas as pd
    
    # 加载csv数据, 返回df对象
    df = pd.read_csv('../data/LJdata.csv')
    print(df.head())
    # 获取前10条数据
    df2 = df.head(10)
    print(df2)
    
    # 输出结果如下
             区域          地址    户型  面积  价格  朝向    更新时间  看房人数
    0    燕莎租房        新源街  2150  58002017.07.21        26
    1    望京租房      澳洲康都  2179  78002017.07.23        33
    2  广安门租房      远见名苑  2186  80002017.07.20        34
    3  天通苑租房  天通苑北一区  21103  5300  东南  2017.07.25        30
    4  团结湖租房    团结湖北口  2163  64002017.07.26        30
             区域            地址    户型  面积  价格  朝向    更新时间  看房人数
    0    燕莎租房          新源街  2150  58002017.07.21        26
    1    望京租房        澳洲康都  2179  78002017.07.23        33
    2  广安门租房        远见名苑  2186  80002017.07.20        34
    3  天通苑租房    天通苑北一区  21103  5300  东南  2017.07.25        30
    4  团结湖租房      团结湖北口  2163  64002017.07.26        30
    5  回龙观租房          龙华园  1158  40002017.07.23        61
    6    北苑租房          筑华年  3189  75002017.07.25        29
    7    马甸租房          月季园  2153  60002017.07.16        26
    8  小西天租房        今典花园  2173  8500    西  2017.07.23        44
    9    北苑租房  北苑家园绣菊园  2182  5300  东南  2017.07.26        30
    

1.1 nlargest和nsmallest函数

通过 df.nlargest(n, 列名) 方法实现对指定列的值由大到小排序, 返回前n行数据

通过 df.nsmallest(n, 列名) 方法实现对指定列的值由小到大排序, 返回前n行数据

n: 整数, n行数据, 默认为5

列名: 指定排序的列名

  • 用nlargest方法,选出价格最高的5条房源信息

    # df.nlargest(n, '列名') # 根据指定列的值由大到小排列,返回n行数据
    print(df2.nlargest(5, '价格'))
    
    # 输出结果如下
             区域        地址    户型  面积  价格 朝向    更新时间  看房人数
    8  小西天租房    今典花园  2173  8500   西  2017.07.23        44
    2  广安门租房    远见名苑  2186  80002017.07.20        34
    1    望京租房    澳洲康都  2179  78002017.07.23        33
    6    北苑租房      筑华年  3189  75002017.07.25        29
    4  团结湖租房  团结湖北口  2163  64002017.07.26        30
    
  • 用nsmallest方法, 选出看房人数最少的5条房源信息

    # df.nsmallest(n, '列名') # 根据指定列的值由小到大排列,返回n行数据
    print(df2.nsmallest(5, '看房人数'))
    
    # 输出结果如下
             区域          地址    户型  面积  价格  朝向    更新时间  看房人数
    0    燕莎租房        新源街  2150  58002017.07.21        26
    7    马甸租房        月季园  2153  60002017.07.16        26
    6    北苑租房        筑华年  3189  75002017.07.25        29
    3  天通苑租房  天通苑北一区  21103  5300  东南  2017.07.25        30
    4  团结湖租房    团结湖北口  2163  64002017.07.26        30
    

1.2 sort_values函数

通过 df.sort_values(列名列表, ascending=) 方法根据指定列指定排序方式排序

ascending: True或False, 默认True->升序, 也可以接收布尔值列表, 每列指定排序方式

  • df.sort_values函数可以按照指定的一列或多列的值进行排序

    # 按价格列的数值由小到大进行排序
    print(df2.sort_values(['价格']))
    # 按价格列的数值由大到小进行排序
    print(df2.sort_values(['价格'], ascending=False))
    # 先对看房人数列由小到大排序, 再对价格列由大到小排序
    print(df2.sort_values(['看房人数', '价格'], ascending=[True, False]))
    
    # 输出结果如下
             区域            地址    户型  面积  价格  朝向    更新时间  看房人数
    5  回龙观租房          龙华园  1158  40002017.07.23        61
    3  天通苑租房    天通苑北一区  21103  5300  东南  2017.07.25        30
    9    北苑租房  北苑家园绣菊园  2182  5300  东南  2017.07.26        30
    0    燕莎租房          新源街  2150  58002017.07.21        26
    7    马甸租房          月季园  2153  60002017.07.16        26
    4  团结湖租房      团结湖北口  2163  64002017.07.26        30
    6    北苑租房          筑华年  3189  75002017.07.25        29
    1    望京租房        澳洲康都  2179  78002017.07.23        33
    2  广安门租房        远见名苑  2186  80002017.07.20        34
    8  小西天租房        今典花园  2173  8500    西  2017.07.23        44
             区域            地址    户型  面积  价格  朝向    更新时间  看房人数
    8  小西天租房        今典花园  2173  8500    西  2017.07.23        44
    2  广安门租房        远见名苑  2186  80002017.07.20        34
    1    望京租房        澳洲康都  2179  78002017.07.23        33
    6    北苑租房          筑华年  3189  75002017.07.25        29
    4  团结湖租房      团结湖北口  2163  64002017.07.26        30
    7    马甸租房          月季园  2153  60002017.07.16        26
    0    燕莎租房          新源街  2150  58002017.07.21        26
    3  天通苑租房    天通苑北一区  21103  5300  东南  2017.07.25        30
    9    北苑租房  北苑家园绣菊园  2182  5300  东南  2017.07.26        30
    5  回龙观租房          龙华园  1158  40002017.07.23        61
             区域            地址    户型  面积  价格  朝向    更新时间  看房人数
    7    马甸租房          月季园  2153  60002017.07.16        26
    0    燕莎租房          新源街  2150  58002017.07.21        26
    6    北苑租房          筑华年  3189  75002017.07.25        29
    4  团结湖租房      团结湖北口  2163  64002017.07.26        30
    3  天通苑租房    天通苑北一区  21103  5300  东南  2017.07.25        30
    9    北苑租房  北苑家园绣菊园  2182  5300  东南  2017.07.26        30
    1    望京租房        澳洲康都  2179  78002017.07.23        33
    2  广安门租房        远见名苑  2186  80002017.07.20        34
    8  小西天租房        今典花园  2173  8500    西  2017.07.23        44
    5  回龙观租房          龙华园  1158  40002017.07.23        61
    
  • Series.sort_valuesDataFrame.sort_values的效果一致,只是无需指定排序依据的列

    print(df2['价格'].sort_values())
    print(df2['价格'].sort_values(ascending=False))
    
    # 输出结果如下
    5    4000
    3    5300
    9    5300
    0    5800
    7    6000
    4    6400
    6    7500
    1    7800
    2    8000
    8    8500
    Name: 价格, dtype: int64
    8    8500
    2    8000
    1    7800
    6    7500
    4    6400
    7    6000
    0    5800
    9    5300
    3    5300
    5    4000
    Name: 价格, dtype: int64
    

2 常用聚合函数

常用聚合函数有:

  • corr 相关性
  • min 最小值
  • max 最大值
  • mean 平均值
  • std 标准偏差
  • quantile 分位数
  • sum 求和

2.1 corr函数计算数值列之间的相关性

print(df.corr())

# 输出结果如下
              面积      价格  看房人数
面积      1.000000  0.710056 -0.114706
价格      0.710056  1.000000  0.019457
看房人数 -0.114706  0.019457  1.000000

"""
相关性得分越接近1, 代表正相关性越强; 越接近-1, 代表负相关性越强 自己和自己相关性为1
面积和价格呈现正相关, 面积越大, 价格越贵
"""

2.2 min函数计算最小值

df.min()会返回df中每一列的最小值构成的Series

print(df2.min())

# 输出结果如下
区域          北苑租房
地址          今典花园
户型            11厅
面积                50
价格              4000
朝向                东
更新时间    2017.07.16
看房人数            26
dtype: object

2.3 max函数计算最大值

max函数计算最大值,用法和min函数的用法一致

print(df2.max())

# 输出结果如下
区域          马甸租房
地址            龙华园
户型            31厅
面积               103
价格              8500
朝向                西
更新时间    2017.07.26
看房人数            61
dtype: object

2.4 mean函数计算平均值

mean函数计算平均值,用法和min函数的用法一致,但只会对数值类型的数据进行计算

print(df2.mean())
print(df2['价格'].mean())

# 输出结果如下
面积          73.6
价格        6460.0
看房人数      34.3
dtype: float64
6460.0

2.5 std函数计算标准偏差

标准偏差:用以衡量数据值偏离算术平均值的程度。标准偏差越小,这些值偏离平均值就越少,反之亦然。

标准差=方差开方

方差=每个值和平均值差值的平方

print(df2.std())
print(df2['价格'].std())

# 输出结果如下
面积          17.296114
价格        1445.452640
看房人数      10.698390
dtype: float64
1445.4526396023266

2.6 quantile函数计算分位数

  • 分位数(Quantile),亦称分位点,常用的有中位数(即二分位数)、四分位数、百分位数等;那什么是分位数呢?我们以中位数为例:通过把一堆数字按大小排序后找出正中间的一个数字作为中位数,如果这一堆数字有偶数个,则中位数不唯一,通常取最中间的两个数值的平均数作为中位数,即二分位数。
  • quantile函数默认返回二分位数;可以通过传入参数来控制返回的四分位数,或其他分位数
# 二分位数
print(df2.quantile())
print(df2['看房人数'].quantile())
# 返回四分位数
print(df2.quantile([0.25, 0.5, 0.75]))
print(df2['看房人数'].quantile([0.25, 0.5, 0.75]))
# 返回三分位数
print(df2.quantile([1 / 3, 2 / 3]))
print(df2['看房人数'].quantile([1 / 3, 2 / 3]))

# 输出结果如下
面积          76.0
价格        6200.0
看房人数      30.0
Name: 0.5, dtype: float64
30.0
       面积    价格  看房人数
0.25  59.25  5425.0     29.25
0.50  76.00  6200.0     30.00
0.75  85.00  7725.0     33.75
0.25    29.25
0.50    30.00
0.75    33.75
Name: 看房人数, dtype: float64
          面积    价格  看房人数
0.333333  63.0  5800.0      30.0
0.666667  82.0  7500.0      33.0
0.333333    30.0
0.666667    33.0
Name: 看房人数, dtype: float64

2.7 sum函数求和

sum函数计算求和,用法和min函数的用法一致, 数值列求和, 非数值列拼接

print(df2.sum())
print(df2['看房人数'].sum())

# 输出结果如下
区域        燕莎租房望京租房广安门租房天通苑租房团结湖租房回龙观租房北苑租房马甸租房小西天租房北苑租房...
地址        新源街澳洲康都远见名苑天通苑北一区团结湖北口龙华园筑华年月季园今典花园北苑家园绣菊园...
户型        21212121211131212121...
面积                                                      736
价格                                                    64600
朝向                                 南东东东南南南南南西东南
更新时间    2017.07.212017.07.232017.07.202017.07.252017.0...
看房人数                                                  343
dtype: object
343

2.8 count计算非空数据的个数

# 构造空值
df2.loc[0, '看房人数'] = None
print(df2.count())
print(df2['看房人数'].count())

# 输出结果如下
区域        10
地址        10
户型        10
面积        10
价格        10
朝向        10
更新时间    10
看房人数     9
dtype: int64
9

总结

请对下列API 有印象、能找到、能理解、能看懂

  • 排序
    • nlargest函数 由大到小排序获取指定数量的数据
    • nsmallest函数 由小到大排序获取指定数量的数据
    • sort_values函数 按值排序
  • 聚合函数
    • corr函数 相关性计算
    • min函数 计算最小值
    • max函数 计算最大值
    • mean函数 计算平均值
    • std函数 计算标准偏差
    • quantile函数 计算分位数
    • sum函数 计算所有数值的和
    • count函数 计算非空数据的个数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值