下面是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=,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 方法
python中 python中的 與
這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...
python中否定for 在python中否定函式
有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...
python中雙重迴圈 加速Python中的雙迴圈
有沒有辦法加快從上一次迭代更新其值的雙迴圈?在 中 def calc n,m x 1.0 y 2.0 container np.zeros n,2 for i in range n for j in range m x np.random.gamma 3,1.0 y y 4 y np.random....