强大的数据处理模块Pandas,可以解决数据的预处理工作,如数据类型的转换、缺失值的处理、描述性统计分析和数据的汇总等
一、序列与数据框的构造
Pandas模块的核心操作对象为序列和数据框。序列指数据集中的一个字段,数据框为至少含有两个字段(或序列)的数据集。
1.构造序列
通过列表、元祖、Numpy中的一维数组构造序列均如序列1,第一列为序列的行索引(行号),自动从0开始;第二列为序列的实际值
通过字典构造不同,第一列为具体的行名称,对应字典中的键,第二列为序列的实际值,对应字典中的值。
还可以通过数据框中的某一列构建
2.序列元素的获取
对一维数组的索引方法和数学以及统计函数都可以用到序列上,但序列有特有的处理方法。
对通过字典类型构建的,可用行号,也可用行名称索引
如果需要对序列做数学函数计算,首选numpy模块
如果需要对序列做统计函数计算,首选序列的方法
3.构造数据框
数据框实际是一个数据集,行代表每一条观测,列代表各个变量。在一个数据库中可以存放不同数据类型的序列,而数组和序列只能存放同质数据。
手工构造数据框的话,首选字典方法,因为其他方法构造没有具体的变量名
还可以通过外部数据的读取构造
二、外部数据的读取
1.文本文件的读取
使用Pandas中的read_table函数或者read_csv函数
filepath_or_buffer:指定txt文件或csv文件所在的具体路径;
sep:指定原数据集中各字段之间的分隔符,默认为Tab制表符;
header:是否需要将原数据集中的第一行作为表头,默认将第一行用作字段名称;
names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头;
index_col:指定原数据集中的某些列作为数据框的行索引(标签);
usecols:指定需要读取原数据集中的哪些变量名;
dtype:读取数据时,可以为原数据集的每个字段设置不同的数据类型;
converters:通过字典格式,为数据集中的某些字段设置转换函数
skiprows:数据读取时,指定需要跳过原数据集开头的行数;
skipfooter:数据读取时,指定需要跳过原数据集末尾的行数;
nrows:指定读取数据的行数;
na_values:指定原数据集中哪些特征的值作为缺失值;
skip_blank_lines:读取数据时是否需要跳过原数据集中的空白行,默认为True;
parse_dates:如果参数值为True,则尝试解析数据框的行索引;如果参数为列表,则尝试解析对应的日期列;如果参数为嵌套列表,则将某些列合并为日期列;如果参数为字典,则解析对应的列(即字典中的值),并生成新的字段名(即字典中的键);
thousands:指定原始数据集中的千分位符;
comment:指定注释符,在读取数据时,如果碰到行首指定的注释符,则跳过改行;
encoding:如果文件中含有中文,有时需要指定字符编码;
a=pd.read_table("F:\第5章 Python数据处理工具--Pandas\第五章 Python数据处理工具--Pandas\data_test01.txt",sep=",",skiprows=2,skipfooter=3,comment="#",encoding="utf8",thousands="&",parse_dates={"birthday":[0,1,2]})
a
原数据集用逗号分隔每一列,则改变sep参数,合并新字段birthday,comment参数指定跳过的特殊行,含有中文的重新编码,千分位符为了保证数值型数据的正常读入
2.电子表格的读取
使用read_excel函数
io:指定电子表格的具体路径;
sheetname:指定需要读取电子表格中的第几个Sheet,可以传递整数也可以传递具体的Sheet名称;
header:是否需要将数据集的第一行用作表头,默认为是需要的;
skiprows:读取数据时,指定跳过的开始行数;
skip_footer:读取数据是,指定跳过的末尾行数;
index_col:指定哪些列用作数据框的行索引(标签);
names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头;
parse_cols:指定需要解析的字段;
parse_dates:如果参数值为True,则尝试解析数据框的行索引;如果参数为列表,则尝试解析对应的日期列;如果参数为嵌套列表,则将某些列合并为日期列;如果参数为字典,则解析对应的列(即字典中的值),并生成新的字段名(即字典中的键);
na_values:指定原始数据中哪些特殊值代表了缺失值;
thousands:指定原始数据集中的千分位符;
convert_float:默认将所有的数值型字段转换为浮点型字段;
converters:通过字典的形式,指定某些列需要转换的形式;
b=pd.read_excel(io="F:\第5章 Python数据处理工具--Pandas\第五章 Python数据处理工具--Pandas\data_test02.xlsx",header=None,converters={0:str},names=['ID',"name",'color',"price"])
b
对于第一列,实际上是字符型,为了避免数据读入时自动变成数值型字段,需要用converts参数
3.数据库数据的读取
需要先通过cmd命令输入pip install pymysql或者pysmsql(分别对应MYSQL和SQL Server)
CASE1:pymysql中的connect
host:指定需要访问的MySQL服务器;
user:指定访问MySQL数据库的用户名;
password:指定访问MySQL数据库的密码;
database:指定访问MySQL数据库的具体库名;
port:指定访问MySQL数据库的端口号;
charset:指定读取MySQL数据库的字符集,如果数据库表中含有中文,一般可以尝试将该参数设置为“utf8”或“gbk”;
CASE2:pymssql中的connect
参数含义也是一致的,所不同的是pymysql模块中connect函数的host参数表示需要访问的服务器,而pymssql函数中对应的参数是server
以MYSQL举例:
# 读入MySQL数据库数据
# 导入第三方模块
import pymysql
# 连接MySQL数据库
conn = pymysql.connect(host='localhost', user='root', password='test',
database='test&