Pandas 数据加载、存储与文件格式: read_csv, to_csv

Pandas 数据加载、存储与文件格式

摘自《利用Python进行数据分析2版》

  • 读取文本文件和其他更高效的磁盘存储格式,
  • 加载数据库中的数据,
  • 利用Web API操作网络资源。

6.1 读写文本格式的数据read_csv

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 代表空格,包括  fv。
  • 所以sep="s+",就代表1个以上的空格作为分隔符号。

参数skiprows : list-like, int, callable

  • 根据行号,忽略掉一些行

参数nrows : int

  • 读取部分行,一般用于大文件,分块读取行。

⚠️参数na_values: scalar, str, list, dict,用于处理缺失值。

  1. 默认:如果发现值是'', '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN', '-NaN', '-nan'等等,则解析为NaN。
  2. 可以指定某些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

1.使用to_csv,默认把数据写到一个以逗号“,”为seperator分隔符号的文件。

2.可以使用参数sep指定分隔符号。

3.缺失值NaN等的处理,默认会输出为空字符串""。使用参数na_rep来设置缺失值以什么表示。

4.如果不保存index和column标签,则使用参数index=False, header=False

5.参数columns=[]可以指定列

例子:

data
#something    a    b    c    d    message
#0    one    1    2    3.0    4    NaN
#1    two    5    6    NaN    8    world
#2    three    9    10    11.0    12    foo

import sys
# 输出到屏幕
data.to_csv(sys.stdout, sep="|", na_rep="NaN")
#|something|a|b|c|d|message
#0|one|1|2|3.0|4|NaN
#1|two|5|6|NaN|8|world
#2|three|9|10|11.0|12|foo

data.to_csv(sys.stdout, index=False, header=False)
#one,1,2,3.0,4,
#two,5,6,,8,world
#three,9,10,11.0,12,foo

处理分隔符格式 197页

本章主要将pandas内置的包csv的用法。

对于那些使用复杂分隔符或多字符分隔符的文件,csv模块就无能为力 了。

这种情况下,你就只能使用字符串的split方法或正则表达式方法re.split进 行行拆分和其他整理工作了。

后面的章节未阅读。

JSON数据

XML和HTML:Web信息收集

6.2 二进制数据格式

实现数据的高效二进制格式存储最简单的办法之一是使用Python内置的pickle序列化。

使用HDF5格式

读取Microsoft Excel文件

6.3 Web APIs交互

许多网站都有一些通过JSON或其他格式提供数据的公共API。通过Python访问这些 API的办法有不少。一个简单易用的办法(推荐)是requests包

 

6.4 数据库交互

案例见之前的博客:https://www.cnblogs.com/chentianwei/p/12103298.html

你肯定不想每查一次数据库就重写一次。SQLAlchemy 项目是一个流行的Python SQL工具,它抽象出了SQL数据库中的许多常见差异。

pandas有一个read_sql函数,可以让你轻松的从SQLAlchemy连接读取数据。

原文地址:https://www.cnblogs.com/chentianwei/p/12321131.html