DataFrame是一个表格型的数据结构,每一列代表一个变量,每一行则是一条记录,DataFrame是一个共享index的Series的集合。
创建和加载
import pandas as pd
import numpy as np
创建函数:df = pd.DataFrame(np.random.randn(6, 4), index = pd.to_datetime(['2016-01-01', '2016-01-02', '2016-01-03', '2016-01-04', '2016-01-05, '2016-01-06'], columns = list('ABCD')),其中randn(6,4)表示生成一个6*4的二维数组, index指定索引列,columns指定列名。
从text或者csv文件中读取:pd.read_table('file_path', sep = '\t', header = None, names = None),其中file_path是带路径的文件名,sep表示文件中的列分隔符,header是指用作别名的行数,None表示没有,默认值为0。names用来指定列名,跟header是二选1的。
从csv文件中读取:pd.read_csv('file_path', header = None, sep = ''):与read_table相同。
从mysql中读取:首先建立mysql连接:import MySQLDb
mysql_cn = MySQLDb.connect(host='localhost', port = 3306, user= 'root', passwd = 'pwd123', db = 'stock')
pd.read_sql('select * from company limie 10;', con = mysql_cn)
查看DataFrame对象
前几行:df.head(3)
后几行:df.tail(3)
查看列名:df.columns
查看行的index:df.index
查看数据值:df.values
查看描述性信息:df.describe()
DataFrame对象索引与切片
对行进行切片:df[1:3]
提取单独的一列:df['A']
提取多列:df[['A', 'B']]
根据boolean值查询:df[df['A'] > 0], 查看A列大于0的行;
更灵活的函数为loc,iloc,ix:
标签索引与切片:loc,通过标签来访问
提取特定列:df.loc[:, 'A'],提取'A'列
提取特定多列:df.loc[:, 'A':'C'],提取'A'到'C'列
提取特定行的特定列:df.loc[dates[0:2], 'A':'C'],df.loc[dates[0], 'A':'C'],提取特定date的A-C列
根据boolean读取:df.loc[df.loc[:, 'A'] > 0]
位置索引与切片:iloc,通过位置来访问
提取特定行:df.iloc[2]
提取特定列:df.iloc[:, 2]
提取指定行和列:df.iloc[[1,4], [3,5]](第1,4行,第3,5列)
切片:df.iloc[1:4, 2:4](前闭后开区间)
提取特定位置:df.iloc[3,4], df.iat[3,4]
根据boolean值进行提取:df.loc[:,df.iloc[3]>0],所有行中,选择第三行大于0的列。
广义索引与切片:ix,自动判断使用标签或者位置
对行切片:df.ix[2:5]
取某几行,某几列:df.ix[[1,3], 2], df.ix[[1,3], 'C']
对行列进行切片:df.ix[1:3, 'A':'C']
根据boolean值进行提取:df.ix[1:3, iloc[3]> 0], [1,3)行,其中第3行>0的列。