天天看點

python做資料透視表_Python pandas中強大的資料透視表

你一定常常遇到這樣的情況,拿到2張幾十萬條資料的excel表,在excel裡篩選卡的要死。這個時候,為了後續的分析順利,果斷存到mysql裡,使用Python進行分析。當然也可以python直接讀取本地檔案。記得pandas中有類似excel的資料透視表功能,正好可以試一試:

Python連接配接mysql使用的是mysql.connector,通過參數設定資料庫使用者名、密碼和名稱,連接配接資料庫:

import

mysql.connector

import

pandas

as

pd

conn = mysql.connector.connect(user=

'root'

, password=

'123456'

, database=

'crawler_data'

)

cursor = conn.cursor()

在crawler_data資料庫中我們主要使用一個 t_house_sale表,主要包括所在區域、樓盤名稱、位址、用途、房屋類型、成交日期、建築面積等幾十個屬性資料,我們這次分析的目的是按年月、區域、房屋類型進行統計建築面積、成交價格。

主要的代碼放在pd_type()函數中:

def pd_type():

df= pd.read_sql('select 所在區, 成交日期, year(成交日期) as year, month(成交日期) as month, 房屋類型, 建築面積, 成交價格 from t_house_sale', con=conn)

print(df.head())

df['建築面積'].astype('float64')

df['成交價格'].astype('float64')

df2=pd.pivot_table(df, index=['year', 'month', '所在區', '房屋類型'], values=['建築面積', '成交價格'], aggfunc=[len, sum])

df2.to_csv('df509-2.csv')

pd_type()

conn.commit()

cursor.close()

首先,pandas中有一個read_sql()讀取資料庫中的資料,這裡第一個參數是sql查詢語句,con為所要連接配接的資料庫,這樣我們就把十幾萬條的資料讀到了DataFrame中。

其次,因為建築面積和成交價格需要進行分類彙總,是以講這兩列設定為‘float64’類型,在資料庫中是‘double’類型,Python并沒有‘double’類型。

最後,就是資料透視表了,有一個主函數pd.pivot_table(),第一個參數是要分析的DataFrame名稱,index參數是分類的索引,values是需要統計的列,aggfunc是需要對values進行的統計分析函數,這要我們就完成了一個類似excel的資料透視表功能,得出結果用時不超過10秒。可以通過to_csv()或者to_sql()将資料透視表輸出。

以後,對于資料量稍大的資料使用資料透視表,可以嘗試使用Python啦