文中所用数据集有需要的可以私聊我获取
学习目标
-
知道排序函数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_values
和DataFrame.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中每一列的最小值构成的Seriesprint(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函数 计算非空数据的个数
-