Python: 使用Pandas处理数据
pandas介绍
pandas名字来源于panel datas,即面板数据pandas主要用于数据分析及数据处理pandas最常用的两种数据结构是Series和DataFrame从形状上来看,DataFrame是二维数据结构的封装,Series是DataFrame中的一列,是一维数据结构的封装pandas提供的更重要的API包括数据清洗、数据预处理、数据操作、数据读取和导出
pandas.Series
可以将
Series看作更强的字典,提供了许多类似numpy数组的API构造方法:
Series(data=None, index=None, dtype=None, name=None, copy=None)data:数据源,可以是列表、字典、数组index:索引列表/数组当
data提供的是列表或数组时,index默认为以0开头的递增索引序列,也可以提供长度和data相同的一维数据结构当
data提供的是字典时,index若为None则默认index为该字典的键,Series中的值为该字典的值,若index不为None则起筛选作用,以index的值为索引值,若某索引值存在于data中则取data的值,否则为numpy.nan本质上是自动转换为一个
AxesData对象(用于存储索引信息的数据对象),可以通过自定义index实现类似字典的索引name:该Series对象的名字,可以在DataFrame等结构中索引
Series实例属性:index:Index对象,表示索引数据values:numpy数组,表示其存储的数据dtype:存储数据的数据类型,可以在构造方法中指定,否则自动推断shape:Series对象的形状,Series永远将data视为一维结构,即使传递一个二维数组
Series实例方法:describe():返回Series对象,包含原对象的各种统计数据,包括'count', 'mean', 'std', 'min', 'max'也可以通过调用原对象的
count()、mean()方法直接获取单个统计数据,其中sum(), cov(), corr()等是describe()没有涉及到的unique():返回去重后的numpy数组sort_index()和sort_values():返回根据索引或根据值排序后的Series对象dropna():返回删除了所有nan后的Series对象fillna(v):返回将所有nan用v填充后的Series对象to_list()和to_frame():转化为原生列表和DataFrame对象loc和iloc:pandas支持切片语法,同时提供了另一种索引方法loc(line of code),通过loc[label]或iloc[index]可以更清晰地表示索引,它们和原生索引的最明显区别是:切片符是双闭切片无论是原生切片符还是
loc切片,Series对象都同样支持条件过滤,而且它实现了一般的运算符重载,均为逐元素运算,同numpy数组一样在运算时会自动对齐cumsum(), cumprod(), cummax(), cummin():返回前缀求和/求积/取最大/取最小处理后的Series对象
构造方法示例:
1
2
3
4
5
6
7import pandas as pd
s1 = pd.Series([1, 2]) # 0:1, 1:2
s2 = pd.Series([1, 2], index=[2, 1]) # 2:1, 1:2
s3 = pd.Series([[1, 2], [3, 4]]) # shape: (2,) 0:list[1,2], 1:list[3,4]
s4 = pd.Series({1:2, 'a':3}) # 1:2, 'a':3
s5 = pd.Series({1:2, 'a':3}, index=[1, 2]) # 1:2, 2:None
pandas.DataFrame
Series可以看作更强的字典,而DataFrame则可以看作值全为Series对象的字典,因此它是二维数据结构与
Series不同的是,DataFrame有行索引和列索引构造方法:
DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)data:可以是列表、数组、字典,DataFrame永远将data视为二维数据结构来解析当
data提供的是字典,则使用字典的键作为columns(列索引),用字典的值作为列,要求每一列结构相同,索引统一为index参数(行索引)此外,
DataFrame将Series看作一列,将二维数组的第一维看作行、第二维看作列index和columns参数分别为行索引和列索引
DataFrame实例方法:大多数方法和
Series的实例方法一致,此外详细介绍loc系列索引方法loc[x][y]:按照先列再行的顺序索引,和原生的切片符不同,本质是先通过列索引取得Series再用Series.locloc[x, y]:取x行y列,和原生的切片符一致loc[[x1, x2, ...], [y1, y2, ...]]:选取第x1, x2, ...行、第y1, y2, ...列的元素并返回DataFrame,其中这些值是离散的,不能用:loc[[x1, x2, ...]]:相当于在上述方法的基础上,默认选择全部列,只选择x1, x2, ...行的元素类型转换方法:
to_csv(), to_excel(), to_json(), to_sql()transpose()或T:返回转置后的DataFrame
读取数据
读取
csv文件:pandas.read_csv(filepath_or_buffer, sep, head, names, dtype, index_col)读取
excel文件:pandas.read_excel(io, sheet_name, header, names, index_col, usecols, dtype, engine, ...)读取数据库文件:
pandas.read_sql(query, conn_obj)读取网页文件:
pandas.read_html(url)