下面是python透视表的简单实例,希望对学习这一块的朋友们能够有所帮助。
import pandas as pd
def pivot_table():
data_df = pd.read_csv("data.csv")
# 形成基础的成绩表
pivot_df = data_df.pivot(index='userNum', columns='subjectCode', values='score')
pivot_df.columns.name = None
# 按照课程号(subjectCode)进行分组
data_df_G = data_df.groupby(["subjectCode"], as_index=False)
# 位置信息标记
temp_count = 1
for index, subject_df in data_df_G:
# 进行透视表重组,运用dataframe的insert方法,把成绩排名(通过dataframe的rank方法实现)添加到各科成绩之后
pivot_df.insert(temp_count,"rank_" + str(index), pivot_df[index].rank(ascending=False,method='min'))
# 运行dataframe的rename方法,重命名各行的标题名
pivot_df.rename(columns={index:("score_" + str(index))},inplace=True)
temp_count += 2
print(pivot_df)
# 把userNum添加到列中
pivot_df['userNum'] = pivot_df.index
# 将索引名称置空
pivot_df.index.name = None
temp_df = data_df.loc[:,["userNum","userName"]]
# 通过dataframe中的drop_duplicates方法去除重复的值
temp_df.drop_duplicates(inplace=True)
# 剩余列拼接(on代表要加入的标签的名称,how代表加入的方式,其中left表示仅使用左框架中的键,类似于SQL左外连接; 保留关键顺序)
pivot_df = temp_df.merge(pivot_df,on="userNum",how="left")
print(pivot_df)
pivot_table()
实例数据集"data.csv"如下:
userNum,score,subjectCode,subjectName,userName
001,90,01,大数据与数据挖掘,王盟
002,96,01,大数据与数据挖掘,刘想
003,93,01,大数据与数据挖掘,欧阳天天
004,87,01,大数据与数据挖掘,刘美丽
005,90,01,大数据与数据挖掘,上官笑
001,87,02,网络安全,王盟
002,82,02,网络安全,刘想
003,80,02,网络安全,欧阳天天
004,87,02,网络安全,刘美丽
005,92,02,网络安全,上官笑
001,90,03,计算机基础,王盟
002,96,03,计算机基础,刘想
003,93,03,计算机基础,欧阳天天
004,87,03,计算机基础,刘美丽
005,89,03,计算机基础,上官笑
001,87,04,数据结构,王盟
002,82,04,数据结构,刘想
003,80,04,数据结构,欧阳天天
004,87,04,数据结构,刘美丽
005,70,04,数据结构,上官笑
建议在学习一种新的语言或者技术的时候,查看官方的权威文档。
pandas.DataFrame.insert方法
pandas.DataFrame.pivot模块
pandas.DataFrame.groupby方法
pandas.DataFrame.merge方法
pandas.DataFrame.rank方法
pandas.DataFrame.loc 方法