Python Pandas操作

  1. Pandas的安装
    在cmd输入pip install pandas
    导入方式:import pandas as pd

  2. Pandas的简介
    Pandas是基于Numpy的一种工具,提供了高性能矩阵的运算,该工具是为了解决数据分析任务而创建的。也是贯穿整个Python数据分析非常核心的工具。
    Pandas支持大部分Numpy语言风格,尤其是数组函数与广播机制的各种数据处理。但是Numpy更适合处理同质型的数据。而Pandas的设计就是用来处理表格型或异质型数据的,高效的清洗、处理数据。

  3. Pandas数据结构介绍

Series(一维)

Series介绍
Series是一种一维的数组型对象,它包含了一个值序列(values),并且包含了数据标签,称为索引(index)。

Series创建

pd.Series(data=None,index=None,dtype=None,name=None,copy=False)
参数
data创建数组的数据,可为array-like, dict, or scalar value
index指定行索引(索引和元素必须一致)索引默认为range(n)
dtype数组数据类型
name数组名称
copy是否拷贝
Series方法
s.astype()修改数据类型
s.head(n)预览数据前5条
s.tail(n)预览数据后5条
s.reset_index(drop = False)重置索引,drop:删除原索引
Series属性
s.dtype查看数据类型
s.index查看行索引

关于Series索引与切片:
(默认索引range(n),修改索引为数字时为索引,修改索引为字符串时标签,标签用" ",如不存在标签,则不能取标签)

  • s [“标签”](单取)
  • s [ 索引 ](单取)
  • s.loc[“标签”](单取)
  • s.iloc[索引](单取)
  • s [ [“标签”,“标签”] ] (间隔取)
  • s [ [ 索引,索引 ] ] (间隔取)
  • s [ “标签”:“标签” ] (连续取)
  • s [ 索引:索引 ] (连续取)
  • s [ 布尔索引 ](满足条件取)

关于Series运算:
(Series运算,对照索引运算,进行合并,如果运算一方没有,则值为NaN)


DataFrame(二维)

DataFrame介绍
DataFrame表示的是矩阵的数据表,它包含已排序的列集合,每一列可以是不同的值类型(数值,字符串,布尔值)。在DataFrame中,数据被存储为一个以上的二维块。

DataFrame创建

pd.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)
参数
data创建数组的数据,可为ndarray, dict
index指定行索引,默认为range(n)
columns指定列索引,默认为range(n)
dtype数组数据类型
copy是否拷贝

DataFrame与dict:dict二层嵌套,外层为行,里层为列,呈现为DataFrame

data为dict时:

  • columns默认为key,值为value,index默认为range(n),如果指定的columns没有值时,默认值为NaN

data为ndarray时:

  • 默认形式存放,columns与index默认为range(n),指定columns或index没有对应值时,默认值为NaN
DataFrame常用方法
df.head(n)显示头部几行,默认前5行
df.tail(n)显示末尾几行,默认后5行
df.info()相关信息概述
DataFrame属性
df.shape查看数组形状,返回值为元组
df.dtypes查看列数据类型
df.ndim数据维度,返回为整数
df.index行索引
df.columns列索引(不用与)
df.values

重置索引:
(将原有索引进行替换,如果重置的索引 与 df中的索引无关则填充NaN,有关则填充原本值)

df.reindex(index=None, columns=None, axis=None,fill_value=nan)
参数
index行索引
columns列索引
axis指定轴
fill_value默认填充值,默认为NaN

关于DataFrame索引与切片:
(取行取列区别看 “ : ”)
关于行
(没有取列,默认为全部列)(可单取,可连续取)(左闭右闭原则)

  • df [ :索引 ]
  • df [ :“行标签” ]
  • df [ : ] (取所有行及列)

关于列:
(没有取行,默认为全部行)(列只能单取或多个单取)

  • df [ “列标签” ] (不可为行标签)
  • df [ “列标签” , “列标签” ]
  • df.列标签 (获取某一列)

关于loc与iloc:
(与numpy切片操作相似,神奇索引由 " ( ) " 变成了 " [ ] ")
语法:loc [ 行 , 列 ]  ; iloc[ 行 , 列 ]
区别:loc当行没有标签时,可以使用索引,否则不行,iloc只能使用索引

索引标签重复问题:
当重复索引连续时,不论单取还是连续取,都不会报错,会将重复索引内容全部取出,当重复索引分开时,单取不会报错,连续取则会报错,不推荐使用重复索引和标签

添加数据的方式:

  • 直接取值并赋值进行添加,值为一,或一 一对应(可添加行与列)
  • 通过 insert 添加列
insert(loc, column, value, allow_duplicates=False)
参数
loc插入的位置
columns插入列标签的名称
value数据
allow_duplicates是否允许重复
  • 通过 append 添加行
    (列索引必须一致)
append(other, ignore_index=False, verify_integrity=False, sort=False)
参数
other另外一个数组
ignore_index
verify_integrity
sort

删除数据方式:

  • del df [ “列标签” ] (改变原数据)
  • df.drop ( )(行列都可删除)(默认为0轴)
df.drop(labels=None,axis=0,index=None,columns=None, inplace=False)
参数
labels指定标签
axis指定轴
index指定行
columns指定列
inplace是否替换原数据

DataFrame算术:
和numpy相似,具有广播机制,但行列都不相同时,相同部分运算,不同部分自动填充NaN
(填充值算术运算,改变默认填充值,只需要设置参数 fill_value

使用填充值的算术运算
add加法(+)
sub减法(-)
div除法(/)
floordiv整除(//)
mul乘法(*)
pow幂次方(**)

注意:Series使用算术方法,不支持指定填充值

函数应用于映射:

方法
df.apply(func, axis=0)通过 apply 将func运用到列 或者 行
df.applymap(func)applymap将func应用到每个数据上

DataFrame排序:

方法
df.sort_index(axis=0,ascending=True)(轴排序axis指定轴,ascending为排序方式,默认为True表示升序
df.sort_values(by)(值排序by指定一列或多列作为排序键

注意:by = [col1,col2] 是先给col1排序 当col1有相同值时,col2中按排序顺序再排序

描述性统计的概述和计算:

方法
count非NaN值的个数
min,max最小值,最大值
idxmin,idxmax最小值,最大值的标签索引
sum求和
mean平均值
median中位数
var方差
std标准差
cumsum累计值
cummin,cummax累计值的最小值或最大值
cumprod值的累计积
diff计算第一个算术差值(时间序列)
pct_change百分比
corr按索引对其的值的相关性
cov协方差
  1. Pandas数据清洗过滤
    数据清洗实际上也是数据质量分析,检查原始数据中是否存在脏数据(不符合要求,或者不能直接进行分析的数据),并且处理脏数据。

常见情况如下

  • 缺失值
  • 异常值
  • 重复数据

处理缺失值
Pandas使用浮点值NaN(not a Number)表示缺失值,并且缺失值在数据中时常出现。那么Pandas的目的之一就是"无痛地"处理缺失值。

判断是否为NaN

  • pd.isnull(df) (返回哪些是缺失值的布尔值,是则为True,否则为False)
  • pd.notnull(df) (返回值是isnull的反集)
    (注意python内建的None也会被当做NaN)

过滤缺失值

  • df.dropna() (删除NaN的所有行或列)
dropna(axis=0,how='any',inplace=False)
参数
axis指定轴
how默认为any 代表删除含有NaN的axis 当为all 时代表删除所有值为NaN的axis
inplace修改被调用的对象 而不是一个备份

填充缺失值

  • fillna()
df.fillna(value=None,method=None,axis=None,inplace=False,limit=None)
参数
value标量或字典对象用于填充缺失值,允许数据类型:scalar, dict, Series, or DataFrame
method插值方法 默认为"ffill",method总计方法:‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, ffill:从上往下填充,bfill:从往上填充
axis需填充的轴 默认为0
inplace修改被调用的对象 而不是一个备份
limit用于向前或向后填充时最大的填充范围
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值