pandas是专门为处理表格和混杂数据设计的
基本参数
import pandas as pd
d = {'id': [1, 2], 'name': ['gz', 'lh'], 'age': [10, 12], 'label': ['YES', 'NO']}
df = pd.DataFrame(d)
# 1.to_csv创建并保存数据,sep分隔符默认为逗号
df.to_csv('test.csv', sep=' ')
# 2.read_csv从路径或url读取数据,sep为分隔符,\s+匹配任意多个空白字符
df = pd.read_csv('test.csv', sep='\s+')
print(df)
# 3.delimiter同sep,但设置后sep失效
df = pd.read_csv('test.csv', delimiter='\s+')
print(df)
# 4.delim_whitespace设置为True时,表示分割符为空白字符,delimiter失效
df = pd.read_csv('test.csv', delim_whitespace=True)
print(df)
# 5.header将指定行设置为列名
df = pd.read_csv('test.csv', delim_whitespace=True, header=0)
print(df)
# 6.names主动设置列名
df = pd.read_csv('test.csv', delim_whitespace=True, names=['id', 'name', 'age'])
print(df)
# 7.index_col将指定列设为索引,其它列依次向后移
df = pd.read_csv('test.csv', delim_whitespace=True, index_col=3)
print(df)
# 8.usecols选取指定列
df = pd.read_csv('test.csv', delim_whitespace=True, usecols=['id', 'name'])
print(df)
# 9.prefix设置列名前缀及索引,header须设为None
df = pd.read_csv('test.csv', sep=' ', prefix='col', header=None)
print(df)
通用解析参数
import pandas as pd
# 1.dtype调整列的数据类型
df = pd.read_csv('test.csv', sep='\s+', dtype={'age': float})
print(df.dtypes)
# 2.converters对列数据进行操作
df = pd.read_csv('test.csv', sep='\s+', converters={'age': lambda x: 1 + int(x)})
print(df)
# 3.true_values将目标字符清洗为True,false_values将目标字符清洗为False
df = pd.read_csv('test.csv', sep='\s+', true_values=['YES'], false_values=['NO'])
print(df)
# 4.skiprows过滤掉目标索引行
df = pd.read_csv('test.csv', sep='\s+', skiprows=[1])
print(df)
# 5.skip_footer从文件末尾排除的行数,解析器退化为Python
df = pd.read_csv('test.csv', sep='\s+', skipfooter=1)
print(df)
# 6.nrows设置一次性读入的行数
df = pd.read_csv('test.csv', sep='\s+', nrows=2)
print(df)
时间处理相关参数
import pandas as pd
from datetime import datetime
d = {'id': [1, 2], 'name': ['gz', 'lh'], 'age': [10, 12], 'time': ['00:00:00', '#'],
'date': ['2020-07-28', '2020-07-28']}
df = pd.DataFrame(d)
df.to_csv('test_date.csv', sep=' ', index=False)
print(df.dtypes)
# 1.parse_dates将列转化为时间型,可以拼接时间,拼接后会作为DataFrame的第一列
df = pd.read_csv('test_date.csv', sep='\s+', na_values=['#'], parse_dates=[['date', 'time']])
print(df)
# 2.date_parser将列转换为定制的时间类型
df = pd.read_csv('test_date.csv', sep='\s+', parse_dates=['date'],
date_parser=lambda dates: datetime.strptime(dates, '%Y-%m-%d'))
print(df)
# 3.infer_datetime_format在parse_dates可用的情况下根据第一个日期字符串推断格式,官方文档说可以提速
df = pd.read_csv('test_date.csv', sep='\s+', parse_dates=['date'], infer_datetime_format=True)
print(df.dtypes)
分块读入相关参数
import pandas as pd
# 1.iterator设为True返回一个可迭代对象,以便逐块处理文件
chunk = pd.read_csv('test.csv', sep='\s+', iterator=True)
# get_chunk读取想要的行数
print(chunk.get_chunk(1))
# 接下去读取
print(chunk.get_chunk(1))
# 2.chunksize设置文件块行数
chunk = pd.read_csv('test.csv',sep='\s+',chunksize=1)
print(chunk.get_chunk())
print(chunk.get_chunk())
格式和压缩相关参数
import pandas as pd
# 1.compression指定压缩文件后缀并解压读取,必须只包含一个文件
df = pd.read_csv('test.zip', sep='\s+', compression='zip')
print(df)
# 2.encoding 指定字符集类型
df = pd.read_csv('test.csv', sep='\s+', encoding='utf-8')
print(df)
# 3.error_bad_lines设为False运行中不报错,warn_bad_lines设为True打印异常
df = pd.read_csv('test.csv', sep='\s+', error_bad_lines=False, warn_bad_lines=True)
print(df)
文档信息
- 本文作者:Weikang Yu
- 本文链接:https://AccelYu.github.io/2020/07/27/Pandas/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)