读取数据
- read_csv 默认分隔符为逗号
- read_table 默认分隔符为制表符(\t)
- read_fwf 没有分隔符
- read_clipboard 读取剪切板中的数据
read_table 读取csv文件时,指定分隔符 sep=','
没有列名时
- 方法一:
默认分配列名 参数 header=None - 方法二:
变量names=['a', 'b', 'c', 'd', 'message']
自定义列名 参数 names=names
将message列名作为索引pd.read_csv('xx.csv', names=names, index_col='message')
层次化索引pd.read_csv('xx.csv', names=names, index_col=['b', 'message'])
其他分隔符,可以用正则表达式作为read_table的分隔符
pd.read_table('xxx.txt', sep='\s+') 如果是数量不等的空白符分割
参数skiprows跳过文件的第一行、第三行和第四行。 skiprows=[0, 2, 3]
read_csv和read_table参数
参数 | 描述 |
---|---|
path | 文件位置、url、文件型对象的字符串 |
sep或delimiter | 对行中各字段进行拆分的字符序列或正则表达式 |
header | 用作列名的行号。默认为0(第一行)。如果没有header行就应该设置为None |
index_col | 用作行索引的列编号或列名。可以是单个名称/数字或由多个名称/数字组成的列表(层次化索引) |
names | 用于结果的列名列表,当header=None时 |
skiprows | 需要忽略的行数,或需要跳过的行号列表 |
na_values | 一组用于替换NA的值,可以是列表或字典 |
nrows | 需要读取的行数(从文件开始处算起) |
skip_footer | 需要忽略的行数(从文件末尾处算起) |
squeeze | 如果数据经解析后仅含一列,则返回Series |
thousands | 千位分隔符 |
chunksize | 如设置=1000则读取1000行,返回TextParser,可以进行迭代 |
TextParser还有一个get_chunk方法,可以读取任意大小的块
将数据写到文本格式
data = pd.read_csv('xxx.csv')
data.to_csv('xxx2.csv')
还可以用其他分割符 data.to_csv(sys.stdout, sep='|')
缺失值在输出结果中会被表示为空字符串,用其他值来标记 data.to_csv(sys.stdout, na_rep='NULL')
不写入行和列的标签data.to_csv(sys.stdout, index=False, header=False)
以指定顺序,写出一部分的列 data.to_csv(sts.stdout, index=False, cols=['a', 'b', 'c'])
从csv中读取Series,用from_csv比read_csv更方便,因为无header行,且第一列作索引
从Excel中读取
获取Excel对象 xls_file = pd.ExcelFile('xxx.xls')
读取某个表 table = xls_file.parse('Sheet1')
从数据库中存取
import pandas.io.sql as sql
sql.read_frame('select * from tablename', conn)