Pandas数据处理学习笔记完整(待更)

pandas文件读写

Pandas是Python的第三方库,提供高性能易用的数据类型和分析工具

import pandas as pd

Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用

1.1读取文本文件

使用read_table来读取文本文件

pandas.read_table(filepath_or_buffer, sep=’\t’, header=’infer’, 
names=None, index_col=None, dtype=None, engine=None, nrows=None)

使用read_csv函数来读取csv文件

pandas.read_csv(filepath_or_buffer, sep=’\t’, header=’infer’,
 names=None, index_col=None, dtype=None, engine=None, nrows=None)

参数如下:
在这里插入图片描述
• read_table和read_csv函数中的sep参数是指定文本的分隔符的
o 如果分隔符指定错误,在读取数据的时候,每一行数据将连成一片
• header参数是用来指定列名的,如果是None则会添加一个默认的列名
• encoding代表文件的编码格式
o 常用的编码有utf-8、utf-16、gbk、gb2312、gb18030等
o 如果编码指定错误数据将无法读取,IPython解释器会报解析错误

1.2 文本文件存储

使用to_csv函数实现以csv格式存储

DataFrame.to_csv(path_or_buf=None, sep=,, na_rep=, columns=None, 
header=True, index=True,index_label=None,mode=’w’,encoding=None)

参数如下:
在这里插入图片描述

1.3 读取Excel文件

read_excel函数:读取“xls”“xlsx”两种Excel文件

pandas.read_excel(io, sheetname=0, header=0, index_col=None,
 names=None, dtype=None)

参数如下:
在这里插入图片描述

1.4 Excel文件存储

to_excel方法,其语法格式如下。

DataFrame.to_excel(excel_writer=None, sheetname=None, na_rep=, 
header=True, index=True, index_label=None, mode=’w’, encoding=None) 

• 与to_csv方法的常用参数基本一致
o 区别之处在于指定存储文件的文件路径参数名称为excel_writer
o 增加sheetnames参数以指定存储的Excel sheet名,默认为sheet1
o 没有sep参数

二 Series

2.1 创建Series对象

类似字典key-value,在series中则为index的纵轴标度与对应的values
在这里插入图片描述
在这里插入图片描述
可以由如下类型创建:
• Python列表:index与列表元素个数一致
• 标量值:index表达Series类型的尺寸
• Python字典:键值对中的键是索引index从字典中进行选择操作
• ndarray:索引和数据都可用ndarray创建
• 其他函数:range等

2.2 Series基本操作

• Series类型包括index和values两部分
.index属性获得纵轴索引,.values获得数据值
• Series类型的操作类似ndarray类型
• Series类型的操作类似Python字典类型

index和value如下操作:
在这里插入图片描述
类似ndarray类型
索引方法相同,采用 [ ]
numpy中运算和操作可用于Series类型
可以通过自定义索引的列表进行切片
可以通过自动索引进行切片,如果存在自定义索引,则一同被切片
类似Python字典类型
在这里插入图片描述
Series类型的对齐操作

在这里插入图片描述

2.3 Series小结

在这里插入图片描述

三 DataFrame

DataFrame类型由共用相同索引的一组列组成,可以看成是Series的容器,其结构既有行索引,又有列索引的二维数组
• 行索引:index
• 列索引:columns
在这里插入图片描述

3.1 DataFrame基本操作:

DataFrame创建:
可以由以下类型进行创建:
• 二维ndarray对象
• 由一维ndarray、列表、字典、元组或Series构成的字典
• Series类型
• 其他的DataFrame类型
DataFrame常用属性:
在这里插入图片描述
DataFrame数据查看

  • 对单列数据的访问

以字典访问某一个key的值的方式使用对应的列名,实现单列数据的访问
以属性的方式访问,实现单列数据的访问(不建议使用,易引起混淆)

  • 访问某一列的某几行

单独一列的DataFrame可以视为一个Series
访问一个Series中多个元素的方法

  • 访问多列数据

访问DataFrame多列数据可以将多个列索引名称视为一个列表

  • 对某几行访问
    • 方法一:
      第一个[:]代表获取所有列,第二个[]筛选行,第一个[:]可以省略
    • 方法二:
      head和tail函数可以得到开始或者末尾的多行数据,默认参数为5行

使用loc,iloc访问DataFrame数据

  • loc函数是针对DataFrame索引名称的切片方法

DataFrame.loc[行索引名称或条件, 列索引名称]
如传入的不是索引名称,那么切片操作将无法执行

  • iloc函数是针对DataFrame行索引和列索引的位置的切片方法

DataFrame.iloc[行索引位置, 列索引位置]

  • loc、iloc利用多列的列名或者位置作为一个列表或者数据参数实现多列切片

  • 使用loc,iloc方法可以取出DataFrame中的任意数据

  • 使用loc时,传入的行索引名称如果为一个区间,则前后均为闭区间

  • 使用iloc时,传入的行索引位置或列索引位置为区间时,则为前闭后开区间

  • loc还可以传入表达式,结果会返回满足表达式的所有值

  • 若使用detail.iloc[detail[‘order_id’]==‘458’,[1,5]]读取数据,则会报错,原因在于此处条件返回的为一个布尔值Series,而iloc可以接收的数据类型并不包括Series。根据Series的构成只要取出该Series的values就可以了。

  • 需改为detail.iloc[(detail[‘order_id’]==‘458’).values,[1,5]])。

  • loc更加灵活多变,代码的可读性更高,iloc的代码简洁,但可读性不高。具体在数据分析工作中使用哪一种方法,根据情况而定,大多数时候建议使用loc方法。

使用ix访问DataFrame数据

  • ix方法更像是loc和iloc两种切片方法的融合。ix方法在使用时既
    可以接收索引名称也可以接收索引位置。其使用方法如下。DataFrame.ix[行索引的名称或位置或者条件, 列索引名称或位置]
  • 使用ix方法时有个注意事项,第一条,当索引名称和位置存在部分重叠时,ix默认优先识别名称

DataFrame数据更改
原理:将这部分数据提取出来,重新赋值为新的数据
为DataFrame增添数据

  • 添加一列的方法:
    • 需要新建一个列索引对该索引下的数据进行赋值操作即可 新增的一列值是相同的则直接赋值一个常量即可 删除某列或某行数据:
    • drop函数:
      drop(labels, axis=0, level=None, inplace=False, errors=‘raise’)
      axis为0时表示删除行,axis为1时表示删除列
  • 参数说明:在这里插入图片描述

3.2 numpy中的描述性统计函数

• 数值型数据的描述性统计主要包括
o 最小值、均值、中位数、最大值、四分位数、极差、标准差、方差、协方差和变异系数等
• numpy库中包含一些常用的统计学函数
• pandas库基于numpy,自然也可以用这些函数对DataFrame进行描述性统计
在这里插入图片描述

3.3 Pandas中数值型特征的描述性统计方法

• 提供了更便利的方法来计算均值等,如detail[‘amounts’].mean()
• describe方法
o 能一次性得出DataFrame所有数值型特征的非空值数目、均值、四分位数、标准差
在这里插入图片描述

3.4 DataFrame数据:类别型特征的描述性统计

• 描述类别型特征的分布状况,可以使用频数统计表。pandas库中实现频数统计的方法为value_counts。
• pandas提供了categories类,可以使用astype方法将目标特征的数据类型转换为category类别。
• describe方法除了支持传统数值型以外,还能够支持对category类型的数据进行描述性统计,四个统计量分别为列非空元素的数目,类别的数目,数目最多的类别,数目最多类别的数目。

四 转换与处理时间序列数据

4.1 转换字符串时间为标准时间

• 多数情况:分析时间类型数据进行的前提就是将原本为字符串的时间转换为标准时间类型
• pandas继承了numpy库和datetime库的时间相关模块,提供了6种时间相关的类
在这里插入图片描述
Timestamp类型
• 时间类中最基础的,也是最为常用的
• 在多数情况下,时间相关的字符串都会转换成为Timestamp
o to_datetime函数:实现字符串转换为Timestamp
• 值得注意的是,Timestamp类型时间是有限制的

DatetimeIndex与PeriodIndex函数
• 除了将数据字原始DataFrame中直接转换为Timestamp格式外,还可以将数据单独提取出来将其转换为DatetimeIndex或者PeriodIndex
• 转换为PeriodIndex的时候需要注意,需要通过freq参数指定时间间隔,常用的时间间隔有Y为年,M为月,D为日,H为小时,T为分钟,S为秒。两个函数可以用来转换数据还可以用来创建时间序列数据,其参数非常类似
• 日常使用的过程中,两者区别相对较小DatetimeIndex 是用来指代一系列时间点的一种数据结构 PeriodIndex 则是用来指代一系列时间段的数据结构
在这里插入图片描述

提取时间序列数据信息:Timestamp类常用属性
• 在多数涉及时间相关的数据处理、统计分析的过程中,需提取时间中的年份,月份等数据
在这里插入图片描述
在DatetimeIndex和PeriodIndex中提取信息
• 在DatetimeIndex和PeriodIndex中提取对应信息可以以类属性方式实现
• 值得注意的是PeriodIndex相比于DatetimeIndex少了weekday_name属性,所以不能够用该属性提取星期名称数据。若想要提取信息名称可以通过提取weekday属性,而后将0-6四个标签分别赋值为Monday至Sunday。

加减时间数据:Timedelta类
• 是时间相关类中的一个异类,不仅能使用正数,还能s使用负数表示单位时间
• 使用Timedelta类,配合常规的时间相关类能够轻松实现时间的算术运算
• Timedelta函数中时间周期中没有年和月。所有周期名称,对应单位及其说明如下表所示
在这里插入图片描述
• Timedelta类
o 使⽤Timedelta ,可以很轻松地实现在某个时间上加减⼀段时间
o 除了⽤Timedelta实现时间的平移外,还能直接对两个时间序列进⾏相减,从⽽得出⼀个Timedelta

发布了4 篇原创文章 · 获赞 9 · 访问量 489

猜你喜欢

转载自blog.csdn.net/hxy18219110128/article/details/105288891