首页 > 编程语言 >python - pandas常用计算函数

python - pandas常用计算函数

时间:2024-06-09 13:33:57浏览次数:10  
标签:租房 26 函数 python 2017.07 print 看房 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    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
      1    望京租房      澳洲康都  2室1厅    79  7800    东  2017.07.23        33
      2  广安门租房      远见名苑  2室1厅    86  8000    东  2017.07.20        34
      3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
      4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.07.26        30
               区域            地址    户型  面积  价格  朝向    更新时间  看房人数
      0    燕莎租房          新源街  2室1厅    50  5800    南  2017.07.21        26
      1    望京租房        澳洲康都  2室1厅    79  7800    东  2017.07.23        33
      2  广安门租房        远见名苑  2室1厅    86  8000    东  2017.07.20        34
      3  天通苑租房    天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
      4  团结湖租房      团结湖北口  2室1厅    63  6400    南  2017.07.26        30
      5  回龙观租房          龙华园  1室1厅    58  4000    南  2017.07.23        61
      6    北苑租房          筑华年  3室1厅    89  7500    南  2017.07.25        29
      7    马甸租房          月季园  2室1厅    53  6000    南  2017.07.16        26
      8  小西天租房        今典花园  2室1厅    73  8500    西  2017.07.23        44
      9    北苑租房  北苑家园绣菊园  2室1厅    82  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  小西天租房    今典花园  2室1厅    73  8500   西  2017.07.23        44
      2  广安门租房    远见名苑  2室1厅    86  8000   东  2017.07.20        34
      1    望京租房    澳洲康都  2室1厅    79  7800   东  2017.07.23        33
      6    北苑租房      筑华年  3室1厅    89  7500   南  2017.07.25        29
      4  团结湖租房  团结湖北口  2室1厅    63  6400   南  2017.07.26        30

    • 用nsmallest方法, 选出看房人数最少的5条房源信息

      # df.nsmallest(n, '列名') # 根据指定列的值由小到大排列,返回n行数据
      print(df2.nsmallest(5, '看房人数'))
      ​
      # 输出结果如下
               区域          地址    户型  面积  价格  朝向    更新时间  看房人数
      0    燕莎租房        新源街  2室1厅    50  5800    南  2017.07.21        26
      7    马甸租房        月季园  2室1厅    53  6000    南  2017.07.16        26
      6    北苑租房        筑华年  3室1厅    89  7500    南  2017.07.25        29
      3  天通苑租房  天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
      4  团结湖租房    团结湖北口  2室1厅    63  6400    南  2017.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  回龙观租房          龙华园  1室1厅    58  4000    南  2017.07.23        61
      3  天通苑租房    天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
      9    北苑租房  北苑家园绣菊园  2室1厅    82  5300  东南  2017.07.26        30
      0    燕莎租房          新源街  2室1厅    50  5800    南  2017.07.21        26
      7    马甸租房          月季园  2室1厅    53  6000    南  2017.07.16        26
      4  团结湖租房      团结湖北口  2室1厅    63  6400    南  2017.07.26        30
      6    北苑租房          筑华年  3室1厅    89  7500    南  2017.07.25        29
      1    望京租房        澳洲康都  2室1厅    79  7800    东  2017.07.23        33
      2  广安门租房        远见名苑  2室1厅    86  8000    东  2017.07.20        34
      8  小西天租房        今典花园  2室1厅    73  8500    西  2017.07.23        44
               区域            地址    户型  面积  价格  朝向    更新时间  看房人数
      8  小西天租房        今典花园  2室1厅    73  8500    西  2017.07.23        44
      2  广安门租房        远见名苑  2室1厅    86  8000    东  2017.07.20        34
      1    望京租房        澳洲康都  2室1厅    79  7800    东  2017.07.23        33
      6    北苑租房          筑华年  3室1厅    89  7500    南  2017.07.25        29
      4  团结湖租房      团结湖北口  2室1厅    63  6400    南  2017.07.26        30
      7    马甸租房          月季园  2室1厅    53  6000    南  2017.07.16        26
      0    燕莎租房          新源街  2室1厅    50  5800    南  2017.07.21        26
      3  天通苑租房    天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
      9    北苑租房  北苑家园绣菊园  2室1厅    82  5300  东南  2017.07.26        30
      5  回龙观租房          龙华园  1室1厅    58  4000    南  2017.07.23        61
               区域            地址    户型  面积  价格  朝向    更新时间  看房人数
      7    马甸租房          月季园  2室1厅    53  6000    南  2017.07.16        26
      0    燕莎租房          新源街  2室1厅    50  5800    南  2017.07.21        26
      6    北苑租房          筑华年  3室1厅    89  7500    南  2017.07.25        29
      4  团结湖租房      团结湖北口  2室1厅    63  6400    南  2017.07.26        30
      3  天通苑租房    天通苑北一区  2室1厅   103  5300  东南  2017.07.25        30
      9    北苑租房  北苑家园绣菊园  2室1厅    82  5300  东南  2017.07.26        30
      1    望京租房        澳洲康都  2室1厅    79  7800    东  2017.07.23        33
      2  广安门租房        远见名苑  2室1厅    86  8000    东  2017.07.20        34
      8  小西天租房        今典花园  2室1厅    73  8500    西  2017.07.23        44
      5  回龙观租房          龙华园  1室1厅    58  4000    南  2017.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函数计算数值列之间的相关性

    df6 = df[['面积','价格','看房人数']]  # 先获取数字列,因为相关性只能统计数字列
    print(df6.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(df.min()) # 列出每一列的最小值,有些列的最小值没有意义
    df['价格'].min()  #求出价格之一列的最小值
    ​
    # 输出结果如下
    区域          北苑租房
    地址          今典花园
    户型            1室1厅
    面积                50
    价格              4000
    朝向                东
    更新时间    2017.07.16
    看房人数            26
    dtype: object

    2.3 max函数计算最大值

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

     
    print(df.max())
    df['价格'].max()  #求出价格之一列的最大值
    ​
    # 输出结果如下
    区域          马甸租房
    地址            龙华园
    户型            3室1厅
    面积               103
    价格              8500
    朝向                西
    更新时间    2017.07.26
    看房人数            61
    dtype: object

    2.4 mean函数计算平均值

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

     
    print(df.mean())
    print(df['价格'].mean())
    ​
    # 输出结果如下
    面积          73.6
    价格        6460.0
    看房人数      34.3
    dtype: float64
    6460.0

    2.5 std函数计算标准偏差

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

    标准差=方差开方

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

     
    print(df6.std())
    print(df2['价格'].std())
    ​
    # 输出结果如下
    面积          17.296114
    价格        1445.452640
    看房人数      10.698390
    dtype: float64
    1445.4526396023266

    2.6 quantile函数计算分位数

    • 分位数(Quantile),亦称分位点,常用的有中位数(即二分位数)、四分位数、百分位数等;那什么是分位数呢?我们以中位数为例:通过把一堆数字按大小排序后找出正中间的一个数字作为中位数,如果这一堆数字有偶数个,则中位数不唯一,通常取最中间的两个数值的平均数作为中位数,即二分位数。

    • quantile函数默认返回二分位数;可以通过传入参数来控制返回的四分位数,或其他分位数

     
    # 二分位数(中位数)
    print(df6.quantile())
    print(df6['看房人数'].quantile())
    # 返回四分位数
    print(df6.quantile([0.25, 0.5, 0.75]))
    print(df6['看房人数'].quantile([0.25, 0.5, 0.75]))
    # 返回三分位数
    print(df6.quantile([1 / 3, 2 / 3]))
    print(df6['看房人数'].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(df6.sum())
    print(df6['看房人数'].sum())
    ​
    # 输出结果如下
    区域        燕莎租房望京租房广安门租房天通苑租房团结湖租房回龙观租房北苑租房马甸租房小西天租房北苑租房...
    地址        新源街澳洲康都远见名苑天通苑北一区团结湖北口龙华园筑华年月季园今典花园北苑家园绣菊园...
    户型        2室1厅2室1厅2室1厅2室1厅2室1厅1室1厅3室1厅2室1厅2室1厅2室1厅...
    面积                                                      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函数 计算非空数据的个数

标签:租房,26,函数,python,2017.07,print,看房,pandas
From: https://blog.csdn.net/m0_74051333/article/details/139550869

相关文章

  • C++入门7 类|构造函数|析构函数
    一,类型设计和实例化对象封装是面向对象程序设计最基本的特性, 把数据 (属性) 和函数 (操作) 合成一个整体,这在计算机世界中是用类与对象实现的。C++中类的设计1 class 类型名称2 {3 public:4 成员列表1;5 protected:6 成员列表2;7 private:8 成员列表3;......
  • 超详解——python数字和运算——小白篇
    目录1.位运算2.常用内置函数/模块math模块:random模块:decimal模块:3.内置函数:总结:1.位运算位运算是对整数在内存中的二进制表示进行操作。Python支持以下常见的位运算符:按位与(&):两个二进制数对应位都为1时,结果的该位才为1。按位或(|):两个二进制数对应位有一个为1,结果......
  • 使用微分中值定理分析开区间时导数和函数的有界关系
    Step1:微分中值定理简介微分中值定理(MeanValueTheorem,MVT)表明,如果函数f(x)f(x)f(x)在闭区间[a,b][a,b][a,b]上连续,并且在开区间(a,b)(a,b)(a,b)上可导,那么存在一个点c∈(a,b)c\in(a,b)c∈(a,b)使得:f′(c)=f(b)−f(a)b−af'(c)=\frac{f(b)-f(a)}{b-a}f......
  • (C语言)常见字符函数和字符串函数(详解)
    我们都知道,在C语言里有string.h这个头文件,但是C语言里没有string这个类型。字符串通常放在常量字符串中或者字符数组中,字符串常量适用于那些对她不做修改的字符串函数。string.h这个头文件里声明的函数原型也全是针对char数组的种种操作。直到C++中才出现了string这个类这......
  • 避免内存泄漏:C++ 虚析构函数指南
    C++虚析构函数详解及示例在C++编程中,虚析构函数的使用至关重要,尤其在涉及多态时。以下将解释虚析构函数的作用、在基类中使用虚析构函数的必要性以及纯虚析构函数的定义。1.为什么需要虚析构函数?当基类的析构函数没有被声明为虚函数时,通过基类指针删除派生类对象会导致无......
  • C++ 抽象类与纯虚函数详解:理论与实战
    抽象基类为什么不能创建对象?抽象类是一种特殊的类,它被设计用来作为其他类的基类,不能实例化为对象。以下是关于抽象类和纯虚函数的详细解释:1.抽象类的定义:抽象类:带有纯虚函数的类称为抽象类。抽象类不能实例化对象,只能作为基类被继承。纯虚函数:一种没有实现的虚函数,其定义格......
  • 运筹学练习Python精解——指派问题
    练习8分配甲、乙、丙、丁4个人去完成A、B、C、D、E5项任务,每个人完成各项任务的时间见下表。由于任务数多于人数,故考虑:(1)任务E必须完成,其他4项中可任选3项完成;(2)其中有一人完成两项,其他每人完成一项。试分别确定最优分配方案,使完成任务的总时间为最少。人员\任务AB......
  • 深入解析C++中自动生成默认构造函数的五种情况
    自动生成默认构造函数的情况以及相关解释在C++中,当一个类没有任何用户定义的构造函数时,编译器会自动为这个类生成一个默认构造函数。以下是具体情况的解释以及示例:1.带有默认构造函数的类成员对象如果一个类没有任何构造函数,但它含有一个成员对象,而该成员对象有默认构造......
  • 为什么C++友元函数必须在类内部声明?解析与案例
    友元函数是C++中独特的编程结构,允许一个非成员函数或者其他类访问另一个类的私有和保护数据成员。友元在很多情况下是非常有用的,比如操作符重载、类间紧密合作等。为什么需要在类内部声明友元函数?访问权限:友元函数需要访问类的私有和保护数据成员。为此,必须在类内部声明,以便......
  • 判定函数单调性和数列单调性的方法
    判定函数和数列的单调性需要使用不同的方法和工具。以下是判定函数单调性和数列单调性的方法:判定函数单调性的方法Step1:使用导数判定单调性对于一个函数f(x)f(x)f(x),可以通过其导数f′(x)f'(x)f′(x)来判定单调性。如果f′(x)>0f'(x)>0f′(x)>0在某个区间上成立,则......