Pandas 模块的核心操作对象就是 序列 和 数据框 。序列可以理解为数据集中的一个字段 , 数据框是指含有至少两个字段(或序列)的数据集。
序列和数据框的构造
一.构造序列
可以通过Series函数将列表、字典和一维数组转换为序列。
通常情况下,默认序列的样式为两列,第一列为序列的行索引,自动从0开始,第二列是序列的实际值。
通过字典构造的序列,第一列可以自定义行名称,第二列是序列的实际值。
对序列的操作,一般情况下,如果是对序列进行数学函数计算,首选numpy方法;若是对序列做统计运算,一般首选序列的方法,例如像偏度、峰度等等,numpy是没有这些函数的。
二。构造数据框
数据框实际上就是一个数据集,数据集的行代表每一条观测,数据集的列代表各个变量。
和其他的数组、序列相比,数据框的优势是可以存放不同数据类型的序列。
可以通过列表、字典、二维数组构造数据框。字典构造是可以命名具体的列名称的。
外部数据的获取
手工构造数据框是不现实的,毕竟数据量太大,因此我们更多的是通过Python读取外部的数据集(可能包含在csv 、 txt 、 excsl 、 数据库等中)。
一.文本文件的读取
如果需要读取 txt 或 csv 格式中的数据,一般使用read_table 或是 read_csv函数,里面的具体参数意义如下:
pd.read_table(filepath_or_buffer=,sep=‘\t’,header=‘infer’,names=None,index_col=None,
usecols=None,dtype=None,converters=None,skiprows=None,
skipfooter=None,nrows=None,na_values=None,skip_blank_lines=True,
parse_dates=False,thousands=None,comment=None,encoding=None)
filepath_or_buffer:指定txt 或csv 文件所在的具体路径。
sep:指定原数据集中各字段之间的分隔符,默认为Tab制表符。
header:是否需要将第一行作为表头,默认将第一行作为字段名称。
names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头。
index_col:指定原数据集中的某些列作为数据框的行索引。
usecols:指定需要读取原数据集中的哪些变量名。
dtype:读取数据时,可以为原数据集的每个字段设置不同的数据类型。
converters:通过字典格式,为数据集中的某些字段设置转换函数。
skiprows:数据读取时,指定需要跳过原数据集开头的行数。
skipfooter:数据读取时,指定需跳过原数据集末尾的行数。
nrows:指定读取的行数。
na_values:指定原数据集中哪些特征值作为缺失值。
skip_blank_lines:读取数据时,是否需要跳过空白行,默认是True。
thousand:指定原数据集中的千分位符。
comment:指定注释符,读取数据时,如果碰到行首指定的注释符,则跳过该行。
encoding:如果文件中有中文,有时需要指定字符编码。
这里举个例子,对于上述文档,我们想要提取员工的收入信息,代码为:
二.excel表格获取
pd.read_excel(io,sheet_name=0,header=0,skiprows=None,skipfooter=0,
index_col=None,names=None,parse_dates=False,parse_cols=None,
na_values=None,thousands=None,convert_float=True)
io:指定电子表格的路径。
sheet_name:指定需要读取电子表格的第几个sheet。
skiprows:指定跳过的开始行数。
skip_footer:指定跳过的末尾行数。
index_col:指定用哪些列作为数据框的行索引。
names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头。
parse_cols:指定需要解析的字段。
thousands:指定原数据集中的千分位符。
convert_float:默认将所有的数值型转换为浮点型。
converters:通过字典的形式,指定某些列需要转换的形式。
三.数据类型转换和描述统计
可以看到,这里我们对xlsx中的数据进行查看,一共包含11125条记录和7个变量,除了二手车价格和公里数时浮点型,其他的都是字符型变量。
但是我们其实是希望上牌时间Boarding_time应该为日期型。
具体操作如下:
数据的描述性分析:
数值型变量的统计分析,如偏度值和峰值:
离散型变量的统计分析:
可以看到,对于离散型变量,运用describe只能看到那个离散型变量属于top值,并不知道各个离散值的频次,计算频次和频率的方法如下:
可以看到这里是没有专门的索引的。若是想把行标签设置为数据框中的列,可以使用reset_index的方法:
四.字符与日期数据的处理
可以看到,这就是等待我们去处理的数据,
现实生活中,我们可能存在这样的一些需求:
1.更改birthday和tel的数据类型;
2.根据birthday和start_work来新增年龄和工龄两列;
3.如何将手机号中间四位隐藏起来;
4.如何获取到邮箱信息的域名并新增一列;
5.如何基于other字段取出每个人员的专业信息。
针对其进行处理的代码如下:
对于其中的时间函数,除了常见的年月日、时分秒,还有其他一些常见的用法:
date:返回日期
time:返回时间
dayofyear:返回年中第几天
weekofyear:返回年中第几周
dayofweek:返回周几(0~6)
day_name():返回具体的周几名称
quarter:返回第几极度
days_in_month:返回月中第几天
具体实例如下: