pandas提供了一些用于将表格型数据读取为DataFrame对象的函数
read_csv:从文件中加载带分隔符的数据,默认分隔符为逗号
read_table:从文件中加载带分隔符的数据,默认分隔符为制表符
导包
import pandas as pd
import sqlite3
读取数据
con = sqlite3.connect("../data/weather_2012.sqlite")
df = pd.read_sql("SELECT * from weather_2012 LIMIT 3", con)
df
设置index_col
df = pd.read_sql("SELECT * from weather_2012 LIMIT 3", con, index_col='id')
df
写数据
weather_df = pd.read_csv('../data/weather_2012.csv')
con = sqlite3.connect("../data/test_db.sqlite")
con.execute("DROP TABLE IF EXISTS weather_2017")
weather_df.to_sql("weather_2017", con)
url = 'https://raw.githubusercontent.com/datasets/investor-flow-of-funds-us/master/data/weekly.csv'
pd.read_csv(url)
数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等。所进行的计算与数据跟数据透视表中的排列有关。
之所以称为数据透视表,是因为可以动态地改变它们的版面布置,以便按照不同方式分析数据,也可以重新安排行号、列标和页字段。每一次改变版面布置时,数据透视表会立即按照新的布置重新计算数据。另外,如果原始数据发生更改,则可以更新数据透视表。
透视表
行分组透视表
df = DataFrame({'size':np.random.randn(4),
'height':np.random.randn(4),
'weight':np.random.randn(4),
'smoke':['No','Yes','No','Yes'],
'sex':['male','female','female','male']})
df2 = df.pivot_table(index = ['smoke'])
列分组透视表
df = DataFrame({'size':np.random.randn(4),
'height':np.random.randn(4),
'weight':np.random.randn(4),
'smoke':['No','Yes','No','Yes'],
'sex':['male','female','male','female']})
df2 = df.pivot_table(columns = ['smoke'])
行列分组透视表
df = DataFrame({'size':np.random.randn(4),
'height':np.random.randint(10,size = 4),
'weight':np.random.randn(4),
'smoke':['No','Yes','No','Yes'],
'sex':['male','female','female','female']})
df2 = df.pivot_table(index = 'sex',columns = 'smoke',aggfunc= sum,fill_value=0)
display(df,df2)
交叉表
df = DataFrame({'gender':['male','female','female','male','male','female','female','female','male','female'],
'hand':['left','right','right','right','right','right','left','right','right','right']})
display(df,pd.crosstab(df.gender,df.hand,margins=True))
数据:
hand left right All
gender
female 1 5 6
male 1 3 4
All 2 8 10
https://www.data.gov/