1、加载数据
点击查看代码
import pandas as pd
df = pd.read_excel("2020年中国大学排名.xlsx")
2、修改索引
df.set_index("学校名称",inplace= True)
3、查看数据量
df.size
4、数据排序
4.1将数据按照总分升序排列,并展示前20个学校
备注:也就是看倒数20名啦
点击查看代码
df.sort_values('总分',ascending=True).head(20)
# ascending排序,Ture:升序,Fasle:降序
点击查看代码
# 方法一:sort_values()函数,排序
df.sort_values(by='高端人才得分',ascending=False).head(10)
# 方法二:nlargest()函数,
# nlargest()的优点就是能一次看到最大的几行,而且不需要排序。
# nlargest()参数:第一个参数就是截取的行数。第二个参数就是依据的列名
df.nlargest(10,'高端人才得分')
查看各项得分最高的学校名称
点击查看代码
df.iloc[:,3:]
# iloc:通过行号来获取数据,
# iloc[:,3:]取第三行之后的所有数据(原数据从第三行后为每项的得分情况,在进一步通过idxmax()取最大值)
# 在python中,有 .argmax() 和 .idxmax() 两个函数,前者用于Series中,后者用于DataFrame中。
df.iloc[:,3:].idxmax()
5、数据计算:
mean():平均值
max():最大值
min():最小值
median():中位数
5.1 求某一列数据的某一个统计值:df['列名'].mean()
5.2 求多列数据的多个统计值:
例如:计算 总分、高端人才得分、办学层次得分的最大最小值、中位数、均值
点击查看代码
df.agg({
'总分':['max','min','median','mean'],
'高端人才得分':['max','min','median','mean'],
'办学层次得分':['max','min','median','mean']
})
5.3 统计所有的信息:
例:查看数值型数据的统计信息(均值、分位数等),并保留两位小数df.describe().round(2).T
5.4 分组统计
计算各省市总分均值df.groupby(by='省市')['总分'].mean()
5.5 相关系数统计:
也就是相关系数矩阵,也就是每两列之间的相关性系数df.corr()
5.6 相关系数热力图
方法一:df.corr().style.background_gradient(cmap='coolwarm').set_precision(2)
方法二:
点击查看代码
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize = (9,6),dpi=100)
sns.set(font='SimHei') # 设置中文字体
sns.heatmap(df.corr().round(2),annot=True,cmap='RdBu')
plt.show()
df.省市.value_counts()
在pandas中,value_counts常用于数据表的计数及排序,它可以用来查看数据表中,指定列里有多少个不同的数据值,并计算每个不同值有在该列中的个数,同时还能根据需要进行排序。
df.groupby('省市')['省市'].count() # 通过groupby()函数分组,再统计次数
5.8 热力地图
结合 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()
5.9 绘制总分的直方图、密度估计图
点击查看代码
import seaborn as sns
sns.set(font='SimHei')
sns.distplot(df['总分'])