import numpy as np
import pandas as pd
文件的读取和写入
- 文件的读取
pandas可以读取多种文件格式,常见的由csv,excel,txt等
#读取csv
df_csv = pd.read_csv('data/my_csv.csv')
#读取txt
df_txt = pd.read_table('data/my_table.txt')
#读取excel
df_excel = pd.read_excel('data/my_excel.xlsx')
- 公共参数
header=None 表示第一行不作为列名
index_col 表示把某一列或几列作为索引
parse_dates 表示需要转化为时间的列
usecols 表示读取列的集合,默认读取所有的列
nrows 表示读取的数据行数
【例子】
pd.read_table('data/my_table.txt', header=None)
pd.read_csv('data/my_csv.csv', index_col=['col1', 'col2'])
只读取col1和col2列
pd.read_table('data/my_table.txt', usecols=['col1', 'col2'])
pd.read_csv('data/my_csv.csv', parse_dates=['col5'])
pd.read_excel('data/my_excel.xlsx', nrows=2)
- 数据写入
写入数据时,经常index设置为False
df_csv.to_csv('data/my_csv_saved.csv', index=False)
df_excel.to_excel('data/my_excel_saved.xlsx', index=False)
to_csv可以保存为txt文件,并允许自定义分隔符,‘\t’常用做分隔符
df_txt.to_csv('data/my_txt_saved.txt', sep='\t', index=False)
基本数据结构
pandas有两种基本的数据结构
存储一维 values 的 Series 和存储二维 values 的 DataFrame ,在这两种结构上定义了很多属性和方法
- series
Series由序列的值 data 、索引 index 、存储类型 dtype 、序列的名字 name 四部分组成。
pandas构造函数:
pandas.Series( data, index, dtype, copy)
和一些编程语言类似 属性可以通过.来获取
s = pd.Series(data = [100, 'a', {'dic1':5}],
index = pd.Index(['id1', 20, 'third'], name='my_idx'),
dtype = 'object',
name = 'my_name')
s
例如可以通过.shape来获取序列的长度
s.shape
- DataFrame
DataFrame 在 Series 的基础上增加了列索引
#Create a Dictionary of series
d = {'Name':pd.Series(['Tom','James','Ricky','Vin','Steve','Minsu','Jack']),
'Age':pd.Series([25,26,25,23,30,29,23]),
'Rating':pd.Series([4.23,3.24,3.98,2.56,3.20,4.6,3.8])}
#Create a DataFrame
df = pd.DataFrame(d)
print ("Our data series is:")
print (df)
结果:
Our data series is:
Age Name Rating
0 25 Tom 4.23
1 26 James 3.24
2 25 Ricky 3.98
3 23 Vin 2.56
4 30 Steve 3.20
5 29 Minsu 4.60
6 23 Jack 3.80
常用基本函数
- 汇总函数
head, tail 函数分别表示返回表或者序列的前 n 行和后 n 行,其中 n 默认为5:
可以自己设定返回的行数
#返回前两行
df.head(2)
#返回后三行
df.tail(3)
- 特征统计函数
- sum() :计算数据样本的总和(按列计算)
- mean():计算数据样本的算术平均数
- var():计算数据样本的方差
- std():计算数据样本的标准差
- corr():计算数据样本的Spearman(Pearson)相关系数矩阵
- 唯一值函数
对序列使用 unique 和 nunique 可以分别得到其唯一值组成的列表和唯一值的个数
value_counts 可以得到唯一值和其对应出现的频数 - 替换函数
replace()方法常用来做批量替换
replace的基本结构是:df.replace(to_replace, value) 前面是需要替换的值,后面是替换后的值。 - 排序函数
pandas中的sort_values()函数原理类似于SQL中的order by,可以将数据集依照某个字段中的数据进行排序,该函数即可根据指定列数据也可根据指定行的数据排序。 - apply方法
apply 方法常用于 DataFrame 的行迭代或者列迭代
窗口对象
pandas为了处理数字数据,提供了移动窗口函数(rolling()),扩展窗口函数(expanding()),指数加权滑动(ewm()),并且可以在窗口函数上使用合适的统计函数。
- 滑窗对象
要使用滑窗函数,就必须先要对一个序列使用 .rolling 得到滑窗对象,其最重要的参数为窗口大小 window 。
s = pd.Series([1,2,3,4,5])
roller = s.rolling(window = 3)
roller
- 扩张窗口
扩张窗口又称累计窗口,可以理解为一个动态长度的窗口,其窗口的大小就是从序列开始处到具体操作的对应位置,其使用的聚合函数会作用于这些逐步扩张的窗口上。设序列为a1, a2, a3, a4,则其每个位置对应的窗口即[a1]、[a1, a2]、[a1, a2, a3]、[a1, a2, a3, a4]。其窗口长度是不断扩大的。
s = pd.Series([1, 3, 6, 10])
s.expanding().mean()