Python数据分析3——Pandas的介绍与基础数据结构

目录

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将函数应用到每个数据上

猜你喜欢

转载自blog.csdn.net/qq_52914337/article/details/124975309