第七章-基于python的数据导入与导出
Pandas
pandas是python的一个开源库,提供了高性能且易于使用的数据结构及数据分析工具
Series
处理一维数据
1 | from pandas import Series |
index和values属性
通过Series的index和values属性获取元素值和index值
1 | s.index |
使用自己提供的index
1 | s2 = Series([2, 5, 8, 7], index = ['a','c', 'b', 'd']) |
访问元素
访问单个
1 | s2['a'] // 2 |
访问多个
返回新的Series对象
1 | s2[['a', 'b', 'd']] |
Series和实数做算数运算
1 | s = Series([5,2,8,4]) |
Series和实数做逻辑运算
1 | s = Series([5,2,8,4]) |
bool序列来过滤Series对象
1 | s = Series([5,2,8,4]) |
map
除了可以将Series看成类似数组的结构,也可以看成定长且有序的map
1 | s3 = Series({'a':1, 'c':3, 'b':2}) |
修改值和index
1 | s = Series([5,2,8,4]) |
DataFrame
文本文件的导入与导出
导入CSV文件
CSV文件:一种简单的文本,广泛用于存储表格格式的行列数据
pandas提供read_csv(),read_table()两种方式导入csv文件,返回结果为DataFrame类型
read_csv()
默认分隔符为’,’,且只能读入这种分隔符的csv文件
1 | !type mycsv.csv |
read_table()
默认分隔符为’\t’,可以读入其它分隔符CSV文件
1 | df = pd.read_table('mycsv.csv', sep=',') |
待读取文件没属性列名称
自动以数字零开始,取名属性列
1 | pd.read_table('....csv', header=None) |
自己取名列名
1 | pd.read_table('...csv', names = [.....]) |
以某一列为index
1 | pd.read_table('...csv', names=[....], index_col='某一列的名字') |
正则表达式匹配
1 | pd.read_table('...csv', sep='/s+') |
当第一行比后续行少一个
则相当于已有了index和属性名
read_csv和read_table的其它参数
skiprows
用于文件中的一些无用行
1 | pd.read_csv('...csv', skiprows=[2,8,9]) |
nrows
只显示前n行
1 | pd.read_csv('...csv', nrows=5) |
缺失值处理
默认用NaN填写缺失值
isnull()
1 | pd.isnull(dataframe对象) |
导出CSV文件
JSON格式数据的导入与导出
二进制文件的导入与导出
ASCII文件也称为文本文件,这du种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:5 6 7 8
二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。
二进制文件类型很多,都有自己独特的存储方式。处理这些文件可能涉及非常复杂的过程。由于二进制文件格式复杂且不通用,数据导入工作应尽可能避免使用程序直接处理二进制格式文件
ExcelFile类型
pandas通过ExcelFile类型提供对Excel文件的基本支持
ExcelFile类在内部使用xlrd和openpyxl包来操作Excel文件,需要提前安装
1 | import pandas as pd |
to_excel()
1 | pd.DataFrame(pf).to_excel('out.xlsx', sheet_name='mydata',index=False,header=False) |