pandas 實現excel資料透視表維度轉換

2021-10-07 18:50:15 字數 2149 閱讀 5126

1.pivot_table() 實現三維資料行列轉換,將左邊資料格式轉換成右邊顯示格式

首先將寬表變成長表,用pd.melt()

其中主要引數有

id_vars:不需要被轉換的列名

var_values:需要被轉換的列名,如果剩下的列名都需要被轉換,則可以忽略不寫;

var_name和value_name對應轉換的自定義列名

import pandas as pd

df =pd.read_excel(r'd:\zr.xlsx')

dts = pd.melt(df,id_vars=['城市','年月'],var_name='指標',value_name='值')

print(dts)

#再使用pivot_table()函式將長表轉換成寬表

data = dts.pivot_table(index=['城市','指標'],columns=['年月']).reset_index()

print(data)

#其中中間圖為列印結果,但是從結果看列名稱為雙層索引,當儲存成excel格式時結果為右邊結果

#列印看一下列名稱格式

#獲取列的各層級索引

cols1 = list(data.columns.get_level_values(0))

print(cols1)

cols2= list(data.columns_get_level_values(1))

print(cols2)

cols = cols1[:2]+cols2[2:]

print(cols) #列名稱

#重新命名列名

multiindex()中獲取層級資訊 get_level_values();刪除層級droplevel()兩個的引數傳入所在層級

對於結果排序問題,將城市按照,北京,上海,太原,蘇州 進行排序

cols_orig=['北京','上海','太原','蘇州']

data['城市']=data['城市'].astype('category').cat.reorder_categories(cols_orig, ordered=true)

data = data.sort_values('城市')

2、多列合併成一行

pandas處理excel資料

import pandas as pd f pd.read excel name.xlsx sheet name 檢視有重複的行 re row f.duplicated 去除重複行資料 drop duplicates subset 列名 keep firsrt inplace true 函式是刪除d...

乾貨 利用pandas處理Excel資料

新建乙個excel table1.csv 用於案例講解 df pd.read excel table1.xlsx 相對路徑 df pd.read excel r e anaconda hc datascience table1.csv 絕對路徑 顯示資料的行與列數 df.shape 6,5 顯示資料...

基於pandas的excel資料處理

實現目的 將實驗資料 excel格式 根據date列中資料按照年份劃分成多個資料集並輸出。使用pandas讀取excel檔案未dataframe格式,然後獲取其中date列的資料並進行取最後四位數的操作,迴圈結果所需要的資料集進行判斷 with open filename,r encoding ut...