数据分析三剑客之一:Pandas详解与实战

本文全面介绍了Pandas库,它是Python数据分析必备高级工具。涵盖安装导入,详细讲解Series和DataFrame两种数据结构的创建、访问及属性,还介绍了描述性统计、遍历、排序、去重、缺失值处理等操作,以及对CSV和Excel文件的读写转换。

目录

 

1 Pandas介绍

2 Pandas的安装与导入

2.1 Pandas模块安装

2.2 Pandas模块导入

3 pandas数据结构及函数

3.1 Series结构

3.1.1 ndarray创建Series对象

3.1.2 dict创建Series对象

3.1.3 标量创建Series对象

3.1.4 位置索引访问Series数据

3.1.5 标签索引访问Series数据

3.1.6 Series常用属性axes 

3.1.7 Series常用属性index

3.1.8 Series常用属性values

3.2 DataFrame结构

3.2.1  列表创建DataFame对象

3.2.2 字典嵌套列表创建DataFrame对象

3.2.3 列表嵌套字典创建DataFrame对象

3.2.4 Series创建DataFrame对象

3.2.5 列索引选取DataFrame数据

3.2.6 列索引添加DataFrame数据

3.2.7 列索引删除DataFrame数据

3.2.8 行标签索引选取DataFrame数据

3.2.9 整数索引选取DataFrame数据

3.2.10 切片操作多行选取DataFrame数据

3.2.11 添加DataFrame数据行

3.2.12 删除DataFrame数据行

3.2.13 DataFrame属性方法info(),index,coloumns,values ,axes

3.2.14 head()&tail()查看DataFrame数据

3.2.15 dtypes查看DataFrame数据类型

3.2.16 empty判断DataFrame是否为空

3.2.17 ndim&shape查看DataFrame维数和维度

3.2.18 size查看DataFrame的元素数量

3.2.19 T(Transpose)对DataFrame转置

3.3 pandas描述性统计

3.3.1 垂直和水平方向的所有值求和

3.3.2 mean()求均值

3.3.3 std()求标准差

3.3.4 自定义函数:操作整个数据表 pipe()

3.3.5 自定义函数:操作行或者列apply()

3.4 pandas iteration遍历

3.4.1 以 (row_index,row) 的形式遍历行iterrows():

3.4.2 使用已命名元组的方式遍历行itertuples()

3.5 pandas sorting排序

 3.5.1 axis=0, ascending=True 默认按“行标签”升序排列

3.5.2 axis=1  按“列标签”升序排列

3.6 pandas去重函数

3.6.1 保留第一次出现的行重复项

3.6.2 keep=False删除所有行重复项

3.6.3 subset删除指定的单列去重

3.6.4 subset指定多列同时去重

3.7 Pandas缺失值处理

3.7.1 检查缺失值

3.7.2 缺失数据计算

3.7.3 清理并填充缺失值

3.7.4 使用replace替换通用值

3.7.5 删除缺失值

3.8 pandas csv操作

3.8.1 read_csv()读取文件

3.8.2 names更改文件标头名

3.8.3 skiprows跳过指定的行数

3.8.4 to_csv()转换数据

3.9 pandas操作Excel

3.9.1 to_excel()数据转换

3.9.2 一次性插入多个sheet数据

3.9.3 追加sheet表内容

3.9.4 read_excel()读取数据

3.10 pandas支持的文件格式


 

1 Pandas介绍

Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来,享有数据分析“三剑客之一”的盛名(NumPy、Matplotlib、Pandas)。Pandas 已经成为 Python 数据分析的必备高级工具,它的目标是成为强大、灵活、可以支持任何编程语言的数据分析工具。Pandas具有如下特点:

  • DataFrame是一种高效快速的数据结构模式,Pandas支持DataFrame格式,从而可以自定义索引
  • 可以将不同格式的数据文件加载到内存中
  • 未对齐及其索引方式不同的数据可按轴自动对齐
  • 可处理时间序列或非时间序列数据
  • 可基于标签来切片索引,获得大数据集子集
  • 可进行高性能数据分组、聚合、添加、删除
  • 灵活处理数据缺失、重组、空格

Pandas广泛用于金融、经济、数据分析、统计等商业领域,为各个领域数据从业者提供了便捷。

官网地址:https://pandas.pydata.org/

2 Pandas的安装与导入

2.1 Pandas模块安装

Python自带的包管理工具pip来安装:

pip install pandas

2.2 Pandas模块导入

Pandas的导入

import pandas as pd
import numpy as np   # pandas和numpy常常结合在一起使用

3 pandas数据结构及函数

构建和处理二维、多维数组是一项繁琐的任务。Pandas 为解决这一问题, 在 ndarray 数组(NumPy 中的数组)的基础上构建出了两种不同的数据结构,分别是 Series(一维数据结构)和  DataFrame(二维数据结构):

  • Series 是带标签的一维数组,这里的标签可以理解为索引,但这个索引并不局限于整数,它也可以是字符类型,比如 a、b、c 等;
  • DataFrame 是一种表格型数据结构,它既有行标签,又有列标签。
数据结构 维度 说明
Series 1 该结构能够存储各种数据类型,比如字符数、整数、浮点数、Python 对象等,Series 用 name 和 index 属性来描述
数据值。Series 是一维数据结构,因此其维数不可以改变。
DataFrame 2 DataFrame 是一种二维表格型数据的结构,既有行索引,也有列索引。行索引是 index,列索引是 columns。
在创建该结构时,可以指定相应的索引值。

3.1 Series结构

Series 结构,也称Series序列,是Pandas常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间是一一对应的关系。
Series 可以保存任何数据类型,比如整数、字符串、浮点数、Python 对象等,它的标签默认为整数,从 0 开始依次递增。Series 的结构图,如下所示:

9d5174a2153e491d832e4feb7d18810f.png

通过标签我们可以更加直观地查看数据所在的索引位置。

函数原型:

pandas.Series( data, index, dtype, copy)

参数说明:

#data    输入的数据,可以是列表、常量、ndarray 数组等。
#index    索引值必须是惟一的,如果没有传递索引,则默认为 #np.arrange(n)。
#dtype    dtype表示数据类型,如果没有提供,则会自动判断得出。
#copy     表示对 data 进行拷贝,默认为 False。

可以用数组、字典、标量值或者 Python 对象来创建 Series 对象

Series 访问数据分为两种方式,一种是位置索引访问;另一种是标签索引访问。

Series 的常用属性和方法。在下表列出了 Series 对象的常用属性

名称 属性
axes 以列表的形式返回所有行索引标签
dtype 返回对象的数据类型
empty 判断Series对象是否为空
ndim 返回输入数据的维数
size 返回输入数据的元素数量
values 以ndarray的形式返回Series对象
index 返回一个RangeIndex对象,用来描述索引的取值范围。

3.1.1 ndarray创建Series对象

import pandas as pd
import numpy as np
data = np.array(['a', 'b', 'c', 'd'])

# 使用默认索引,创建 Series 序列对象
s1 = pd.Series(data)
print(f'默认索引:\n{s1}')

# 使用“显式索引”的方法自定义索引标签
s2 = pd.Series(data, index=[100, 101, 102, 103])
print(f'自定义索引\n{s2}')

运行结果显示如下:

默认索引:
0    a
1    b
2    c
3    d
dtype: object

自定义索引
100    a
101    b
102    c
103    d
dtype: object

示例中s1没有传递任何索引,所以索引默认从 0 开始分配 ,其索引范围为 0 到len(data)-1。

3.1.2 dict创建Series对象

把 dict 作为输入数据。如果没有传入索引时会按照字典的键来构造索引;反之,当传递了索引时需要将索引标签与字典中的值一一对应。

import pandas as pd
import numpy as np

data = {'a': 0, 'b': 1, 'c': 2}

# 没有传递索引时 会按照字典的键来构造索引
s1_dict = pd.Series(data)
print(f'没有传递索引\n{s1_dict}')

# 字典类型传递索引时 索引时需要将索引标签与字典中的值一一对应
# 当传递的索引值无法找到与其对应的值时,使用 NaN(非数字)填充
s2_dict = pd.Series(data, index=['a', 'b', 'c', 'd'])
print(f'传递索引\n{s2_dict}')

运行结果显示如下:

没有传递索引
a    0
b    1
c    2
dtype: int64

传递索引
a    0.0
b    1.0
c    2.0
d    NaN
dtype: float64

3.1.3 标量创建Series对象

import pandas as pd
import numpy as np

# 如果data是标量值,则必须提供索引: 标量值按照 index 的数量进行重复,并与其一一对应
s3 = pd.Series(6, index=[0,1,2,3])
print(f'标量值,则必须提供索引\n{s3}')

运行结果显示如下:

标量值,则必须提供索引
0    6
1    6
2    6
3    6
dtype: int64

3.1.4 位置索引访问Series数据

import pandas as pd

s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(f'Series数据\n{s}')

# 位置索引 第一个位置索引:0
print(f'位置索引={s[0]}')

# 标签索引 第
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源启智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值