python中pivot table 透视表实例

下面是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()

实例数据集如下:

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 方法

猜你喜欢

转载自blog.csdn.net/adayan_2015/article/details/82770095
今日推荐