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['總分'])