pandas中的字符串方法
df[“col1”].str.startswith()

三、数据载入,存储及文件格式
1。文本格式数据的读写
方法
| 函数 | 描述 | 
|---|---|
| read_csv | 从文件对象读取分隔好的数据,默认分隔符为逗号 | 
| read_table | 从文件对象读取分隔好的数据,默认分隔符为制表符(‘\t’) | 
| read_fwf | 从特定宽度的文件中读取数据,无分隔符 | 
| read_clipboard | read_table的剪贴板版本 | 
| read_excel | 从xls或xlsx中读取数据 | 
| read_hdf | 读取用pandas存储的HDF5文件 | 
| read_json | 从json字符串读取表格数据 | 
| read_html | 从html文件读取表格数据 | 
| read_msgpack | 读取MessagePack二进制格式的Pandas数据 | 
| read_pickle | |
| read_sas | 读取储存在SAS系统中定制储存格式的SAS数据集 | 
| read_sql | 将SQL查询结果(使用SQLAlchemy)读取为DataFrame | 
| read_stata | 读取Stata格式的数据集 | 
| read_feather | 读取Feather二进制格式 | 
参数:
| 1 | pd.read_table(tablename,sep=',') | 
参数(P170)
| 参数 | 描述 | 
|---|---|
| path | 文件路径 | 
| sep/delimiter | 分隔符 | 
| header | 用作索引的行号,默认为0,如果没有,应为None | 
| index_col | 应作行索引的列名或列号 | 
| names | 结果的列名列表,和header=None连用 | 
| skiprows | 跳过的行数或行号列表 | 
| na_values | 需要用NA替换的值序列 | 
| comment | 在行结尾处分隔注释的字符 | 
| parse_dates | 尝试将数据解析为datetime,默认时False。如果为True,将尝试解析所有的列。也可以指定列名。如果列表的元素是元组或列表,将会组合起来进行解析 | 
| keep_date_col | 如果连接列到parse_dates,保留被连接的列,默认False | 
| converters | 包含列名称映射到函数的字典() | 
| dayfirst | 解析非明确日期,按照国际标准格式处理 | 
| date_parser | 用于解析日期的函数 | 
| nrows | 从文件开头处读入的行数 | 
| iterator | 返回一个TextParser,用于零散的读文件 | 
| chunksize | 用于迭代的块大小 | 
| skip_footer | 忽略文件尾部的行数 | 
| verbose | 打印各种解释器输出的信息,如缺失值的数量 | 
| encoding | 文本编码 | 
| squeeze | 如果解析数据只包含一列,返回一个 Series | 
| thousands | 千位分隔符 | 
(1)分块读取文件
| 1 | pd.options.display.maxrow = 10 显示设置 | 
(2)将数据写入文本格式
| 1 | data.to_csv(file) | 
(3)使用分隔CSV格式
python自带了csv库
| 1 | import csv | 
reader可选参数
| 参数 | 描述 | 
|---|---|
| delimiter | 分隔符 | 
| lineterminator | 平台默认的行终止符 | 
| quotechar | 用在含有特殊字符字段中的引号,默认是“ | 
| quoting | 引用惯例。csv.QUOTE_ALL:引用所有字段,csv.QUOTE_MINIMAL:只使用特殊字符,。。。 | 
| skipinitialsqace | 忽略分隔分隔符后的空白,默认False | 
| doublequote | 如何处理字段内部的引号。 | 
| escapechar | 默认禁用。 | 
写入
| 1 | with open(file,'w') as f: | 
(4) JSON
| 1 | import json | 
(5) XML和HTML网络抓取
html
| 1 | table = pd.read_html('filename') 会搜并尝试解析所有包含在<table>标签中的表格型数据类型。 | 
xml
| 1 | from lxml import objectify | 
2.二进制格式
| 1 | pickle仅作为临时储存格式,由于库的更新,pickle化的对象未来可能无法被反序列化 | 
(1)使用HDF5格式
HDF代表分层数据格式
每个HDF5文件可以储存多个数据集并且支持元数据
HDF5适用于处理不适合在内存中存储的超大型数据
| 1 | store = pd.HDFStore('file') | 
高阶方法
| 1 | frame.to_hdf('file','obj3',format='table') | 
(2)读取Microsoft Excel文件
| 1 | 读取(推荐): | 
(3)与Web API交互
| 1 | request.get() | 
(4) 与数据库交互
| 1 | import sqlalchemy as sqla | 
四、数据的清洗与准备
1.处理缺失值
对于数据值型的数据,pandas使用NaN(Not a number)表示缺失值。我们称NaN为容易检测到的标识值。
方法
| 方法 | 描述 | 
|---|---|
| dropna | 根据每个标签的值是否是缺失值来筛选轴标签,并根据允许丢失的数据量来确定阈值 | 
| fillna | 用某些值填充缺失的数据或使用差值方法 | 
| isnull | 返回表明哪些值是缺失值的布尔值 | 
| notnull | 
(1)过滤缺失值
| 1 | from numpy import nan as NA | 
(2)补全缺失值
| 1 | # 所有的缺失值用相同的值补全 | 
fillna函数参数
| 参数 | 描述 | 
|---|---|
| value | 标量值或字典型对象用于填充缺失值 | 
| method | 差值方法,如果没有其他参数,默认是ffill | 
| axis | 需要填充的轴 | 
| inplace | 修改对象,而不是生成一个视图 | 
| limit | 用于前向或后向填充时最大的填充范围 | 
2.数据转换
(1)删除重复值
| 1 | df.duplicated() 返回布尔值的Series,表示每一行是否存在重复 | 
(2)使用函数或映射进行数据转换
| 1 | lowercased = data['food'].str.lower() | 
(3) 替代值
| 1 | 替换某些值 | 
(4)重命名轴索引
| 1 | map索引并赋值 | 
(5)离散化和分箱(分段)
将数据分段
| 1 | cut按照数据值进行切分 | 
(6) 检测和过滤异常值
| 1 | 输出每列的信息 | 
(7)置换和随机抽样
| 1 | 随机抽样:先生成一个随机序列,然后取样 | 
(8)计算指标/虚拟变量
pd.get_dummies将某一列变量转换为机器学习或统计建模可用的矩阵

给变量添加前缀

将get_dummies和cut等离散化函数连用

3.字符串操作
(1)Python中的字符串方法
(2)正则表达式
(3) pandas中的字符串函数
| 1 | pattern = re.compile('\s+') | 
五、数据规整:连接、联合和重塑
1、分层索引
多级index

将多层索引重塑 unstack()

恢复 stack()

多层索引对象

(1)重排序和层级排序
| 1 | df.swaplevel('key1','key2') | 
(2)按层级进行汇总统计
| 1 | df.sum(level='key1') | 
(3)使用DataFrame的列进行索引
| 1 | df.set_index(['c','d']) | 

2.联合与合并数据集
| 1 | pd.merge:根据一个或多个键的值进行连接,类似于数据库中的join操作 | 
(1)数据库风格的DataFrame join操作
| 1 | pd.merge(df1,df2,on='key') 内连接 | 
(2)沿轴向连接
| 1 | pd.concat([s1,s2,s3]) 默认沿着axis=0的轴向生效,默认外连接 | 
(3)联合重叠数据
使用传入的对象修补缺失值
| 1 | df1.combine_first(df2) | 
3.重塑和透视
stack:“旋转”或将列中的数据透视到行
unstack:将行中的数据透视到列
| 1 | df1.unstack(0) | 



(1)将long的数据转换为wide的格式
| 1 | df.pivot('data','item','value') 第一个参数作为行索引,第二个参数为列索引,第三个参数是填充df的值。 | 

(2)将width的数据转换为long的格式
pivot的相反的操作是melt:将多列合并为一列
| 1 | pd.melt(df,['key']) ['key']为分组指标 | 
pandas1.0.0新特性
markdown导出
| 1 | In [1]: df = pd.DataFrame({"A": [1, 2, 3], "B": [1, 2, 3]}, index=['a', 'a', 'b']) | 
实验特性
NA
| 1 | In [3]: s = pd.Series([1, 2, None], dtype="Int64") | 
string和bool类型
之前的时间和字符串都为object类型,现在可以更改为string和bool类型
select_dtypes
df.select_dtypes("string")可以选择所有类型为string的列