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啦

你可能感兴趣的:(python做数据透视表)