1. 程式人生 > >python中pivot table 透視表例項

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,資料結構,上官笑

建議在學習一種新的語言或者技術的時候,檢視官方的權威文件。

涉及到的學習網站: