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的列