利用python进行数据分析
第六章:数据加载、存储与文本格式
NumPy提供了一个低级但异常高效的二进制数据加载和存储机制,而对于pandas的输入与输出划分为几个大类:
读取文本文件和其他更高效的磁盘存储格式,
加载数据库中的数据,
利用Web API操作网络资源。
说明:以read_csv或read_table读取文件时,对于文件当中的内容可分为多种类型,msg=pd.read_table(file),msg.ix[0],当中存在很多values的类型,‘str’,‘float’,'numpy.float64’等多种类型,但是有些时候pandas会将某些字符类型自定义为’numpy.float64’类型,例如:在文件中是18,单纯的数字,而在read_table读取后,显示的是18.0,type类型为<type ‘numpy.float64’>,出现这个问题需要额外的方法对内容进行修改,msg.loc[i,‘NUMBER’]=str(int(msg.loc[i,‘NUMBER’])),先将定义好的numpy.float64类型转换成int,再转换成str。所以这一点在使用read_csv或read_table读取文件时要格外注意。
1,读写文本格式的数据
表6-1:pandas中的解析函数
| 函数 | 说明 |
| read_csv | 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号 |
| read_table | 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符(“\t”) |
| read_fwf | 读取定宽列格式数据(也就是说,没有制表符) |
| read_clipboard | 读取剪贴板中的数据,可以看做read _table的剪贴板版,在将网页转换为表格示很有用 |
这些函数在将分本数据转换为DataFrame时,这些函数的选项可以划分为以下几个大类:
- 索引:将一个或多个列当做返回的DataFrame处理,以及是否从文件、用户获取列名。
- 类型推断和数据转换:包括用户定义值的转换、缺失值标记列表等。
- 日期解析:包括组合功能,比如将分散在多个列中的日期时间信息组合成结果汇总的单个列。
- 迭代:支持对大文件进行逐块迭代。
- 不规整数据问题:跳过一些行、页脚、注释或其他一些不重要的东西(比如由成千上万个逗号隔开的数值数据)。
1,类型推断(type inference)
指你不用需要指定列的类型到底是数值、整数、布尔值,还是字符串。但日期和其他自定义类型的处理需要进行另外的处理。
以逗号为分割的(CSV)文本文件:
>>> import pandas as pd
>>> import os
>>> cat 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('C:\Users\Administrator\Desktop\\ex1.csv')
#该文件字符以逗号分隔所以可以用read_csv
>>> df
···a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo
>>> df=pd.read_table('C:\Users\Administrator\Desktop\\ex1.csv', sep=',')
#如果用read_table(默认以‘\t’分隔)读取文件,需要指定分隔符类型sep=’,'
read_table和read_csv默认将文件的第一行作为输出数据的行标题,但是如果文件本身不存在行标题则需要加入另外参数。
>>> cat ex2.csv
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
文件读取后可以让pandas为其分配默认的列名,也可以自定义列名。
>&g