目录

Pandas介绍与安装

为什么会有Pandas?

Pandas是什么?

Pandas涉及内容

Pandas安装

Pandas基础数据结构

Series

Series介绍

Series创建

series的索引与值

Series索引与切片

Series运算

DataFrame

DataFrame介绍

DataFrame创建

重置索引

DataFrame基础操作

DataFrame查数据(索引与切片)

使用loc及iloc查询数据

DataFrame修改数据

DataFrame新增数据

DataFrame删除数据

DataFrame算术

描述性统计的概述和计算

DataFrame排序 

函数应用于映射


Pandas介绍与安装

为什么会有Pandas?

Pandas支持大部分Numpy语言风格,尤其是数组函数与广播机制的各种数据处理。但是Numpy更适合处理同质型的数据。而Pandas的设计就是用来处理表格型或异质型数据的,高效的清洗、处理数据。

Pandas是什么?

Pandas是基于Numpy的一种工具,提供了高性能矩阵的运算,该工具是为了解决数据分析任务而创建的。也是贯穿整个Python数据分析非常核心的工具。

Pandas涉及内容

Pandas安装

直接在dos命令行中pip install pandas 即可。

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:指定索引
  • dtype:数组数据类型
  • name:数组名称
  • copy:是否拷贝

data可为iterable, dict, or scalar value

import pandas as pd
pd.Series([1,2,3,4,5,6])   # data为iterable

索引默认为range(0,n) 可以通过index指定索引

pd.Series([1,2,3,4,5],index=list("abcde")) 

数据类型根据data自动调整,但是也可以通过dtype指定

pd.Series(np.random.randint(1,10,size=5),dtype="float")

使用name参数设置数组名称

pd.Series(np.random.randint(1,10,size=3),index=list("abc"),name="data_name")

除此之外,Pandas可以使用Numpy的数组函数。

  • s.dtype                                                           # 查看数据类型
  • s.astype()                                                      # 修改数据类型
  • s.head(n)                                                      # 预览数据前5条
  • s.tail(n)                                                         # 预览数据后5条

但是如果需要显示所有数据,则需以下代码。但并不建议使用

#显示所有列
pd.set_option('display.max_columns', None)

#显示所有行
pd.set_option('display.max_rows', None)

#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)

series的索引与值

  • s.index                                                          # 查看索引
  • s.values                                                        # 查看值序列
  • s.reset_index(drop=False)                           # 重置索引
    • drop                                                            # 是否删除原索引 默认为否

注意

  • 索引对象是不可变的,所以不能单个修改索引

Series索引与切片

  • s['标签']                # 通过标签
  • s['索引']                # 通过索引
  • s.loc(标签)          # 通过标签
  • s.iloc(索引)           # 通过索引

Series运算

  • 共同索引对应为运算,其它填充NaN
s1 = pd.Series(range(10,20),index=range(10))

s2 = pd.Series(range(20,25),index=range(5))

s1+s2  
  • 没有共同索引时,则全部为NaN

DataFrame

DataFrame介绍

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

DataFrame创建

pd.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)

  • data:创建数组的数据,可为ndarray, dict
  • index:指定索引
  • dtype:数组数据类型
  • copy:是否拷贝

重置索引

除了创建时可以指定,我们创建后还可以通过df.reindex()进行重置索引。

  • df.reindex(index=None, columns=None, axis=None,fill_value=nan)

DataFrame基础操作

  • df.shape                                            # 查看数组形状,返回值为元组
  • df.dtypes                                           # 查看列数据类型
  • df.ndim                                             # 数据维度,返回为整数
  • df.index                                            # 行索引
  • df.columns                                       # 列索引
  • df.values # 值
  • d.head(n)                                           # 显示头部几行,默认前5行
  • d.tail(n)                                              # 显示末尾几行,默认后5行
  • d.info()                                              # 相关信息概述
data = [
    {"name":"amy","age":18,"tel":10086},
    {"name":"bob","age":18},
    {"name":"james","tel":10086},
    {"name":"zs","tel":10086},
    {"name":"james","tel":10086},
    {"name":"ls","tel":10086},
]

d2 = pd.DataFrame(data)
d2.head()  
d2.tail()  
d2.info()  

DataFrame查数据(索引与切片)

直接使用索引与标签:

使用loc及iloc查询数据

  • df.loc[]   通过轴标签选择数据
  • df.iloc[]  通过整数索引选择数据

具体使用如下:

DataFrame修改数据

修改数据主要遵循以下两点:

  • 查询数据
  • 再赋值

注意

Pandas中可以直接赋值np.nan,且赋值当前列数据会自动转为浮点类型。而不是整个数组都转,这主要是因为Pandas数据可以是异质性。

DataFrame新增数据

新增列:df["新的列标签"] = 值

注意:添加列,则新添加的值的长度必须与其它列的长度保持一致,否则会报错。

插入列:如果需要在数据中插入列,则使用 df.insert(loc, column, value)

  • loc 为插入列的位置
  • column 为插入列的标签
  • value 为插入列的值

添加行:df.loc["新的行标签",:] = 值

除此之外,我们还可以通过 df.append(df2) 方法添加行,但类似于数组与数组的堆叠拼接。所以df2的列索引必须同df一致。

DataFrame删除数据

法1:del df["列标签"]

法2:df.drop(axis=0,index=None,columns=None, inplace=False)

DataFrame算术

实际上,通过 + - * / // ** 等符号可以直接对DataFrame与DataFrame之间或者DataFrame以及Series之间进行运算。但秉承的原则就是对应索引运算,存在索引不同时,返回结果为索引对的并集。

但是实际操作会发现,当存在索引不同时,返回的值自动填充NaN。

使用填充值的算术方法

注意

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

描述性统计的概述和计算

DataFrame排序 

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

注意

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

函数应用于映射

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

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐