Zaoqi's Blog -> Python数据分析教程 -> 图解Pandas ->
数据探索与描述性统计分析
数据探索与描述性统计分析¶
在利用 Pandas
进行对数据进行缺失值、重复值进行检查与相关处理后
接下来一般是对数据进行简单的探索与统计描述性分析,进一步观察数据特征,为后续的分析提供大致方向。
在线刷题
检查 or 强化 Pandas
数据分析操作?👉在线体验「Pandas进阶修炼300题」
Note
本页面代码可以在线编辑、执行!
本页数据说明¶
为了更好的介绍相关操作,本页面使用 2020年中国大学排名 数据进行展开,你应该对数据字段、数值、类型等相关信息做一个大致了解!
import pandas as pd
df = pd.read_excel("2020年中国大学排名.xlsx",index_col=0)
import warnings
warnings.filterwarnings("ignore")
df.head()
学校名称 | 省市 | 学校类型 | 总分 | 办学层次得分 | 学科水平得分 | 办学资源得分 | 师资规模与结构得分 | 人才培养得分 | 科学研究得分 | 社会服务得分 | 高端人才得分 | 重大项目与成果得分 | 国际竞争力得分 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
排名 | ||||||||||||||
1 | 清华大学 | 北京 | 综合 | 852.5 | 38.2 | 72.4 | 39.6 | 48.4 | 256.8 | 69.1 | 40.6 | 76.5 | 131.0 | 79.9 |
2 | 北京大学 | 北京 | 综合 | 746.7 | 36.1 | 73.1 | 24.6 | 49.2 | 237.6 | 71.0 | 16.2 | 71.9 | 105.8 | 61.2 |
3 | 浙江大学 | 浙江 | 综合 | 649.2 | 33.9 | 65.3 | 20.1 | 48.3 | 215.3 | 68.6 | 23.9 | 49.1 | 81.7 | 43.0 |
4 | 上海交通大学 | 上海 | 综合 | 625.9 | 35.4 | 53.6 | 22.1 | 43.8 | 192.8 | 81.2 | 18.1 | 45.8 | 93.0 | 40.1 |
5 | 南京大学 | 江苏 | 综合 | 566.1 | 35.1 | 47.8 | 10.3 | 47.4 | 218.6 | 59.6 | 5.3 | 42.0 | 71.2 | 29.0 |
数据查看¶
查看指定行¶
查看数据前 10 行
df.head(10)
学校名称 | 省市 | 学校类型 | 总分 | 办学层次得分 | 学科水平得分 | 办学资源得分 | 师资规模与结构得分 | 人才培养得分 | 科学研究得分 | 社会服务得分 | 高端人才得分 | 重大项目与成果得分 | 国际竞争力得分 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
排名 | ||||||||||||||
1 | 清华大学 | 北京 | 综合 | 852.5 | 38.2 | 72.4 | 39.6 | 48.4 | 256.8 | 69.1 | 40.6 | 76.5 | 131.0 | 79.9 |
2 | 北京大学 | 北京 | 综合 | 746.7 | 36.1 | 73.1 | 24.6 | 49.2 | 237.6 | 71.0 | 16.2 | 71.9 | 105.8 | 61.2 |
3 | 浙江大学 | 浙江 | 综合 | 649.2 | 33.9 | 65.3 | 20.1 | 48.3 | 215.3 | 68.6 | 23.9 | 49.1 | 81.7 | 43.0 |
4 | 上海交通大学 | 上海 | 综合 | 625.9 | 35.4 | 53.6 | 22.1 | 43.8 | 192.8 | 81.2 | 18.1 | 45.8 | 93.0 | 40.1 |
5 | 南京大学 | 江苏 | 综合 | 566.1 | 35.1 | 47.8 | 10.3 | 47.4 | 218.6 | 59.6 | 5.3 | 42.0 | 71.2 | 29.0 |
6 | 复旦大学 | 上海 | 综合 | 556.7 | 36.6 | 48.4 | 14.9 | 46.3 | 198.5 | 65.7 | 6.5 | 42.9 | 62.0 | 34.8 |
7 | 中国科学技术大学 | 安徽 | 理工 | 526.4 | 40.0 | 39.1 | 10.6 | 45.9 | 191.5 | 52.6 | 0.2 | 55.1 | 49.2 | 42.2 |
8 | 华中科技大学 | 湖北 | 综合 | 497.7 | 31.9 | 45.2 | 11.3 | 44.2 | 182.8 | 58.3 | 22.0 | 25.5 | 44.9 | 31.8 |
9 | 武汉大学 | 湖北 | 综合 | 488.0 | 31.7 | 48.4 | 9.9 | 45.3 | 198.8 | 51.3 | 11.8 | 21.4 | 44.2 | 25.2 |
10 | 中山大学 | 广东 | 综合 | 457.2 | 30.3 | 47.1 | 13.7 | 46.8 | 154.4 | 65.9 | 5.6 | 27.1 | 33.8 | 32.6 |
数据排序¶
升序¶
将数据按照总分升序排列,并展示前20个学校
备注:也就是看倒数20名啦
df.sort_values(by='总分', ascending=True).head(20)
学校名称 | 省市 | 学校类型 | 总分 | 办学层次得分 | 学科水平得分 | 办学资源得分 | 师资规模与结构得分 | 人才培养得分 | 科学研究得分 | 社会服务得分 | 高端人才得分 | 重大项目与成果得分 | 国际竞争力得分 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
排名 | ||||||||||||||
100 | 广州大学 | 广东 | 综合 | 211.1 | 23.2 | 16.4 | 5.0 | 33.7 | 95.9 | 14.4 | 0.6 | 2.0 | 5.2 | 14.8 |
99 | 杭州电子科技大学 | 浙江 | 理工 | 211.6 | 25.4 | 12.6 | 2.7 | 36.5 | 103.4 | 12.0 | 2.5 | 1.5 | 2.6 | 12.3 |
98 | 上海师范大学 | 上海 | 师范 | 212.8 | 27.3 | 17.9 | 3.6 | 32.1 | 96.9 | 14.0 | 0.5 | 2.0 | 6.8 | 11.8 |
97 | 河南大学 | 河南 | 综合 | 212.9 | 24.2 | 22.7 | 3.4 | 32.5 | 97.5 | 15.7 | 2.1 | 1.3 | 4.2 | 9.2 |
96 | 南京邮电大学 | 江苏 | 综合 | 213.9 | 25.0 | 12.5 | 2.4 | 34.8 | 101.2 | 12.4 | 6.5 | 1.6 | 4.6 | 13.0 |
95 | 广东工业大学 | 广东 | 理工 | 214.2 | 24.2 | 15.5 | 3.7 | 32.6 | 96.7 | 13.8 | 3.2 | 3.1 | 5.3 | 16.2 |
94 | 湖北大学 | 湖北 | 综合 | 214.5 | 26.3 | 14.7 | 2.3 | 35.0 | 105.8 | 10.5 | 2.9 | 1.2 | 3.7 | 12.1 |
93 | 南京信息工程大学 | 江苏 | 理工 | 216.6 | 23.6 | 16.1 | 2.4 | 33.6 | 97.5 | 15.1 | 4.7 | 2.1 | 3.6 | 18.0 |
92 | 燕山大学 | 河北 | 理工 | 216.7 | 26.6 | 15.2 | 2.3 | 34.5 | 107.2 | 12.6 | 2.8 | 2.5 | 4.8 | 8.2 |
91 | 长安大学 | 陕西 | 理工 | 218.9 | 27.2 | 14.0 | 3.7 | 34.1 | 104.9 | 12.1 | 12.4 | 1.1 | 1.1 | 8.2 |
90 | 安徽大学 | 安徽 | 综合 | 219.2 | 25.7 | 19.0 | 2.6 | 29.5 | 110.8 | 15.5 | 1.4 | 0.8 | 3.4 | 10.5 |
89 | 上海理工大学 | 上海 | 理工 | 221.4 | 28.3 | 16.4 | 3.6 | 32.3 | 105.7 | 12.6 | 9.8 | 1.3 | 1.5 | 9.9 |
88 | 华南农业大学 | 广东 | 农业 | 227.1 | 23.2 | 18.0 | 4.5 | 35.0 | 102.4 | 14.8 | 2.2 | 4.0 | 10.3 | 12.7 |
87 | 南昌大学 | 江西 | 综合 | 228.4 | 27.3 | 21.1 | 4.1 | 32.3 | 105.2 | 15.6 | 0.5 | 2.5 | 7.8 | 12.0 |
85 | 湖南师范大学 | 湖南 | 师范 | 233.4 | 27.9 | 20.6 | 2.7 | 35.2 | 109.8 | 15.7 | 0.5 | 1.9 | 7.7 | 11.4 |
85 | 首都师范大学 | 北京 | 师范 | 233.4 | 29.5 | 22.9 | 5.2 | 37.6 | 99.7 | 14.7 | 0.3 | 3.3 | 8.3 | 11.8 |
84 | 云南大学 | 云南 | 综合 | 234.1 | 29.0 | 22.8 | 5.0 | 30.8 | 111.6 | 14.0 | 0.4 | 3.0 | 6.4 | 11.2 |
83 | 郑州大学 | 河南 | 综合 | 234.9 | 26.3 | 28.3 | 6.0 | 37.2 | 91.8 | 23.7 | 1.7 | 2.0 | 4.9 | 13.0 |
82 | 南京工业大学 | 江苏 | 理工 | 235.4 | 25.4 | 14.4 | 3.3 | 33.0 | 102.2 | 15.0 | 8.6 | 6.6 | 12.0 | 15.1 |
81 | 浙江工业大学 | 浙江 | 理工 | 235.5 | 27.6 | 18.7 | 5.7 | 28.7 | 109.5 | 17.8 | 5.6 | 2.5 | 5.8 | 13.5 |
指定列排序¶
将数据按照 高端人才得分 降序排序,展示前 10 位
df.nlargest(10, '高端人才得分')
学校名称 | 省市 | 学校类型 | 总分 | 办学层次得分 | 学科水平得分 | 办学资源得分 | 师资规模与结构得分 | 人才培养得分 | 科学研究得分 | 社会服务得分 | 高端人才得分 | 重大项目与成果得分 | 国际竞争力得分 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
排名 | ||||||||||||||
1 | 清华大学 | 北京 | 综合 | 852.5 | 38.2 | 72.4 | 39.6 | 48.4 | 256.8 | 69.1 | 40.6 | 76.5 | 131.0 | 79.9 |
2 | 北京大学 | 北京 | 综合 | 746.7 | 36.1 | 73.1 | 24.6 | 49.2 | 237.6 | 71.0 | 16.2 | 71.9 | 105.8 | 61.2 |
7 | 中国科学技术大学 | 安徽 | 理工 | 526.4 | 40.0 | 39.1 | 10.6 | 45.9 | 191.5 | 52.6 | 0.2 | 55.1 | 49.2 | 42.2 |
3 | 浙江大学 | 浙江 | 综合 | 649.2 | 33.9 | 65.3 | 20.1 | 48.3 | 215.3 | 68.6 | 23.9 | 49.1 | 81.7 | 43.0 |
4 | 上海交通大学 | 上海 | 综合 | 625.9 | 35.4 | 53.6 | 22.1 | 43.8 | 192.8 | 81.2 | 18.1 | 45.8 | 93.0 | 40.1 |
6 | 复旦大学 | 上海 | 综合 | 556.7 | 36.6 | 48.4 | 14.9 | 46.3 | 198.5 | 65.7 | 6.5 | 42.9 | 62.0 | 34.8 |
5 | 南京大学 | 江苏 | 综合 | 566.1 | 35.1 | 47.8 | 10.3 | 47.4 | 218.6 | 59.6 | 5.3 | 42.0 | 71.2 | 29.0 |
46 | 南方科技大学 | 广东 | 综合 | 289.0 | 26.7 | 7.1 | 16.9 | 41.9 | 105.0 | 26.4 | 1.0 | 38.9 | 7.1 | 18.0 |
10 | 中山大学 | 广东 | 综合 | 457.2 | 30.3 | 47.1 | 13.7 | 46.8 | 154.4 | 65.9 | 5.6 | 27.1 | 33.8 | 32.6 |
8 | 华中科技大学 | 湖北 | 综合 | 497.7 | 31.9 | 45.2 | 11.3 | 44.2 | 182.8 | 58.3 | 22.0 | 25.5 | 44.9 | 31.8 |
分列排名¶
查看各项得分最高的学校名称
df.iloc[:,3:].idxmax()
总分 1
办学层次得分 7
学科水平得分 2
办学资源得分 1
师资规模与结构得分 2
人才培养得分 1
科学研究得分 4
社会服务得分 1
高端人才得分 1
重大项目与成果得分 1
国际竞争力得分 1
dtype: int64
数据统计¶
统计信息|部分¶
计算 总分、高端人才得分、办学层次得分的最大最小值、中位数、均值
df.agg({
"总分": ["min", "max", "median", "mean"],
"高端人才得分": ["min", "max", "median", "mean"],
"办学层次得分":["min", "max", "median", "mean"]})
总分 | 高端人才得分 | 办学层次得分 | |
---|---|---|---|
min | 211.10 | 0.800 | 23.200 |
max | 852.50 | 76.500 | 40.000 |
median | 279.65 | 6.150 | 29.400 |
mean | 322.50 | 11.176 | 29.692 |
统计信息|完整¶
查看数值型数据的统计信息(均值、分位数等),并保留两位小数
df.describe().round(2).T
count | mean | std | min | 25% | 50% | 75% | max | |
---|---|---|---|---|---|---|---|---|
总分 | 100.0 | 322.50 | 118.36 | 211.1 | 244.18 | 279.65 | 378.80 | 852.5 |
办学层次得分 | 100.0 | 29.69 | 3.31 | 23.2 | 27.30 | 29.40 | 31.90 | 40.0 |
学科水平得分 | 100.0 | 27.49 | 12.42 | 6.8 | 19.65 | 24.00 | 33.92 | 73.1 |
办学资源得分 | 100.0 | 7.19 | 5.51 | 2.3 | 3.98 | 5.25 | 9.02 | 39.6 |
师资规模与结构得分 | 100.0 | 39.03 | 4.75 | 28.7 | 35.98 | 37.95 | 43.20 | 49.2 |
人才培养得分 | 100.0 | 134.41 | 33.82 | 91.8 | 109.08 | 122.80 | 154.75 | 256.8 |
科学研究得分 | 100.0 | 26.87 | 15.61 | 9.7 | 15.68 | 21.85 | 32.72 | 81.2 |
社会服务得分 | 100.0 | 7.47 | 7.99 | 0.0 | 2.20 | 5.20 | 9.80 | 40.6 |
高端人才得分 | 100.0 | 11.18 | 14.14 | 0.8 | 3.08 | 6.15 | 12.35 | 76.5 |
重大项目与成果得分 | 100.0 | 20.37 | 22.02 | 1.1 | 7.48 | 13.75 | 24.78 | 131.0 |
国际竞争力得分 | 100.0 | 18.81 | 10.56 | 8.2 | 12.70 | 15.60 | 21.00 | 79.9 |
统计信息|分组¶
计算各省市总分均值
df.groupby("省市")['总分'].mean()
省市
上海 350.510000
云南 234.100000
北京 362.827778
吉林 326.000000
四川 349.266667
天津 396.200000
安徽 328.700000
山东 304.633333
广东 286.011111
江苏 298.386667
江西 228.400000
河北 216.700000
河南 223.900000
浙江 335.150000
湖北 335.085714
湖南 320.100000
甘肃 300.400000
福建 313.550000
辽宁 339.550000
重庆 289.200000
陕西 297.685714
黑龙江 364.800000
Name: 总分, dtype: float64
统计信息|相关系数¶
也就是相关系数矩阵,也就是每两列之间的相关性系数
df.corr()
总分 | 办学层次得分 | 学科水平得分 | 办学资源得分 | 师资规模与结构得分 | 人才培养得分 | 科学研究得分 | 社会服务得分 | 高端人才得分 | 重大项目与成果得分 | 国际竞争力得分 | |
---|---|---|---|---|---|---|---|---|---|---|---|
总分 | 1.000000 | 0.793589 | 0.934838 | 0.836351 | 0.829229 | 0.959664 | 0.942001 | 0.589710 | 0.921307 | 0.953615 | 0.917179 |
办学层次得分 | 0.793589 | 1.000000 | 0.703688 | 0.651787 | 0.755698 | 0.797602 | 0.711259 | 0.417265 | 0.704239 | 0.739157 | 0.667455 |
学科水平得分 | 0.934838 | 0.703688 | 1.000000 | 0.716097 | 0.778855 | 0.889084 | 0.929943 | 0.480871 | 0.793909 | 0.901262 | 0.829870 |
办学资源得分 | 0.836351 | 0.651787 | 0.716097 | 1.000000 | 0.697620 | 0.730003 | 0.747226 | 0.463466 | 0.861156 | 0.812887 | 0.850934 |
师资规模与结构得分 | 0.829229 | 0.755698 | 0.778855 | 0.697620 | 1.000000 | 0.833277 | 0.806259 | 0.425790 | 0.715772 | 0.710717 | 0.705235 |
人才培养得分 | 0.959664 | 0.797602 | 0.889084 | 0.730003 | 0.833277 | 1.000000 | 0.885429 | 0.571678 | 0.830452 | 0.873353 | 0.828115 |
科学研究得分 | 0.942001 | 0.711259 | 0.929943 | 0.747226 | 0.806259 | 0.885429 | 1.000000 | 0.475609 | 0.855328 | 0.882416 | 0.831071 |
社会服务得分 | 0.589710 | 0.417265 | 0.480871 | 0.463466 | 0.425790 | 0.571678 | 0.475609 | 1.000000 | 0.457190 | 0.500942 | 0.533772 |
高端人才得分 | 0.921307 | 0.704239 | 0.793909 | 0.861156 | 0.715772 | 0.830452 | 0.855328 | 0.457190 | 1.000000 | 0.902862 | 0.909247 |
重大项目与成果得分 | 0.953615 | 0.739157 | 0.901262 | 0.812887 | 0.710717 | 0.873353 | 0.882416 | 0.500942 | 0.902862 | 1.000000 | 0.878947 |
国际竞争力得分 | 0.917179 | 0.667455 | 0.829870 | 0.850934 | 0.705235 | 0.828115 | 0.831071 | 0.533772 | 0.909247 | 0.878947 | 1.000000 |
相关系数|热力图¶
将上一题的相关性系数矩阵制作为热力图
### 方法一
df.corr().style.background_gradient(cmap='coolwarm').set_precision(2)
### 方法二
#借助 `matplotlib` 和 `seaborn`
#其中中文设置可以参考[我的这篇文章](https://mp.weixin.qq.com/s/WKOGvQP-6QUAP00ZXjhweg)
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize = (9,6),dpi=100)
sns.set(font='Songti SC')
sns.heatmap(df.corr().round(2),annot=True,cmap='RdBu')
plt.show()
统计信息|频率¶
计算各省市出现的次数
df.省市.value_counts()
北京 18
江苏 15
上海 10
广东 9
陕西 7
湖北 7
浙江 4
湖南 3
安徽 3
山东 3
四川 3
重庆 2
天津 2
辽宁 2
河南 2
福建 2
黑龙江 2
吉林 2
江西 1
云南 1
甘肃 1
河北 1
Name: 省市, dtype: int64
统计信息|热力地图¶
结合 pyecharts
将各省市高校上榜数量进行地图可视化
from pyecharts import options as opts
from pyecharts.charts import Map
list1 = list(pd.DataFrame(df.省市.value_counts()).index)
list2 = list(pd.DataFrame(df.省市.value_counts()).省市)
c = (
Map()
.add('', [list(z) for z in zip(list1,list2)], "china",is_map_symbol_show=False)
.set_global_opts(
title_opts=opts.TitleOpts(title="排名前100高校各省市占比"),
visualmap_opts=opts.VisualMapOpts(max_=20),
)
)
# c.render_notebook() #展示在notebook中
统计信息|直方图¶
绘制总分的直方图、密度估计图
import seaborn as sns
plt.figure(figsize = (9,6),dpi=100)
sns.set(font='Songti SC')
sns.distplot(df['总分'])
plt.show()
On this page