Pandas 数据加载、存储与文件格式: read_csv
摘自《利用Python进行数据分析2版》
- 读取文本文件和其他更高效的磁盘存储格式,
- 加载数据库中的数据,
- 利用Web API操作网络资源。
6.1 读写文本格式的数据
pandas提供了一些用于将表格型数据读取为DataFrame对象的函数。
面对不同的参数,感到头痛很正常(read_csv有超过50 个参数)。pandas文档有这些参数的例子,如果你感到阅读某个文件很难,可以通 过相似的足够多的例子找到正确的参数。
插入知识:
%的使用。
- %+ unix cell命令,可以在jupyter上运行Unix命令。
- %lsmagic 列出常用的所有魔法命令。
❗️的使用,和%类似,运行各种命令。
通过例子来分析read_*系列的参数的用法
使用Unix cell命令, 运行一个csv文件:
In [8]: !cat examples/ex1.csv a,b,c,d,message 1,2,3,4,hello 5,6,7,8,world 9,10,11,12,foo
df = pd.read_csv('ex1.csv') # a b c d message #0 1 2 3 4 hello #1 5 6 7 8 world #2 9 10 11 12 foo
默认第一行为header,参数是header='infer',但如果文件没有header:
- 需使用names参数指定。
- 或者修改header=None, 这会自动增加一行递增的整数列名。
参数index_col: 把列设置为index。
pd.read_csv('ex1.csv', index_col='message')
参数index_col:还可以设置MultiIndex。多重索引, index_col : array_like
参数sep: 设置分隔符号,可以使用正则表达式。
- pandas的re包(正则表达式)\s 代表空格,包括
\t\n\r\f\v。
- 所以sep="\s+",就代表1个以上的空格作为分隔符号。
参数skiprows : list-like, int, callable
- 根据行号,忽略掉一些行
参数nrows : int
- 读取部分行,一般用于大文件,分块读取行。
⚠️参数na_values: scalar, str, list, dict,用于处理缺失值。
- 默认:如果发现值是'', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN', '-NaN', '-nan'等等,则解析为NaN。
- 可以指定某些values,转换为NaN.
#values中的1,2,3被转换为NaN pd.read_csv('ex5.csv', na_values=[1,2,3])
逐块读取文本文件
#设置jupyter中每个cell执行后显示的行数
pd.options.display.max_rows = 60
使用参数:chunksize : int
- 会返回一个可迭代的对象。pandas.io.parsers.TextParser
- 然后对这个对象进行for循环,处理其中的数据。
将数据写出到文本格式
方法:to_csv
后面的章节未阅读。