当前位置: 首页 > news >正文

Python的三方库之Pandas(三)

Python的三方库之Pandas(三)


文章目录

  • Python的三方库之Pandas(三)
  • 一、pandas是什么?
    • 1.1 Pandas 的核心数据结构
    • 1.2 Pandas 的主要功能
    • 1.3. Pandas 的应用场景
  • 二、Series()函数
    • 2.1 创建Series对象的方式
    • 2.2 访问Series对象的数据
    • 2.3 遍历Series对象
    • 2.4 常用的方法
  • 三、DataFrame
    • 3.1 创建 DataFrame 对象
      • 3.1.1 创建 DataFrame 空对象
      • 3.1.2 列表嵌套字典创建 DataFrame 对象
      • 3.1.3 字典嵌套列表创建 DataFrame 对象
      • 3.1.4 Series 创建 DataFrame 对象
    • 3.2 列索引操作
      • 3.2.1选取数据
      • 3.2.2 添加数据
      • 3.2.3 修改数据


一、pandas是什么?

Pandas 是一个开源的 Python 数据分析和操作库,它提供了高性能、易用的数据结构和数据分析工具,广泛应用于数据科学、机器学习、金融分析等领域。以下是关于 Pandas 的详细介绍:

1.1 Pandas 的核心数据结构

  • DataFrame
    • 这是 Pandas 最重要的数据结构之一,它是一个二维表格型数据结构,类似于 Excel 中的工作表。它由行和列组成,每一列可以存储不同类型的数据(如整数、浮点数、字符串等)。
    • 例如,可以用来存储一个公司的员工信息表,其中每一列代表员工的姓名、年龄、职位等信息,每一行代表一个员工。
  • Series
    • 它是一维数组,类似于 Python 中的列表,但与列表不同的是,Series 有一个索引(index)。索引可以是数字、字符串或其他类型,用于标识每个元素。
    • 例如,可以用来存储某个月份每天的气温数据,索引是日期,值是对应的气温。

1.2 Pandas 的主要功能

  • 数据读取与写入
    • Pandas 支持多种数据格式的读取和写入,包括 CSV、Excel、JSON、SQL 数据库等。例如,可以使用 pd.read_csv() 函数从 CSV 文件中读取数据,使用 df.to_excel() 将数据保存到 Excel 文件中。
  • 数据清洗与预处理
    • 提供了强大的数据清洗功能,如处理缺失值(用填充、删除等方法)、去除重复数据、数据类型转换等。例如,可以使用 df.dropna() 删除缺失值,使用 df.fillna() 填充缺失值。
  • 数据筛选与排序
    • 可以根据条件筛选数据,例如选择某列大于某个值的行,也可以按某列或多列对数据进行排序。例如,df[df['age'] > 30] 可以筛选出年龄大于 30 的数据。
  • 数据分组与聚合
    • 使用 groupby() 方法可以对数据进行分组,然后对每个分组应用聚合函数(如求和、平均值、最大值等)。例如,可以对销售数据按地区分组,然后计算每个地区的总销售额。
  • 数据合并与连接
    • 类似于 SQL 中的 JOIN 操作,可以将多个 DataFrame 按指定的键合并在一起。例如,可以将员工信息表和员工绩效表按员工 ID 合并。

1.3. Pandas 的应用场景

  • 数据分析:用于对数据进行统计分析,如计算描述性统计量(均值、中位数、标准差等)。
  • 数据可视化:虽然 Pandas 本身不是专门的可视化工具,但它可以与 Matplotlib、Seaborn 等可视化库结合,方便地生成图表。
  • 机器学习数据准备:在机器学习项目中,Pandas 常用于数据预处理,如特征工程、数据标准化等,为模型训练提供干净的数据。

二、Series()函数

2.1 创建Series对象的方式

  • 1、直接创建Series空对象
  • 2、使用ndarray创建Series对象
  • 3、用字典创建Series对象

案例一:创建Series空对象

import pandas as pd

s = pd.Series()
print (s)

Series([], dtype: object)

案例二:使用ndarray创建Series对象

import pandas as pd
import numpy as np

arr = np.array([1,2,3,4,5])
s = pd.Series(arr)
print(s)

0 1
1 2
2 3
3 4
4 5
dtype: int32

案例三:用字典创建Series对象

import pandas as pd
import numpy as np

data = {"name": ["John", "Anna", "Peter", "Linda"]}
s = pd.Series(data)
print(s)

name [John, Anna, Peter, Linda]
dtype: object

2.2 访问Series对象的数据

import pandas as pd
import numpy as np

data = {"name": ["John", "Anna", "Peter", "Linda"],"age": [20, 21, 19, 18]}
s = pd.Series(data)

print(s["name"])
print(s[1])

2.3 遍历Series对象

import pandas as pd
data = pd.Series([1,2,3,4,5], index=['a','b','c','d','e'])
for i in data:
    print(i)
# 1
# 2
# 3
# 4
# 5
# 使用item()函数
for i in data.items():
    print(i)
# ('a', 1)
# ('b', 2)
# ('c', 3)
# ('d', 4)
# ('e', 5)
# 使用values
for i in data.values:
    print(i)
# 1
# 2
# 3
# 4
# 5
# 使用index
for i in data.index:
    print(i)
# a
# b
# c
# d
# e

2.4 常用的方法

isnull() 和 notnull()
isnull() 和 notnull() 用于检测 Series、DataFrame 中的缺失值。所谓缺失值,顾名思义就是值不存在、丢失、缺少

  • isnull():如果为值不存在或者缺失,则返回 True
  • notnull():如果值不存在或者缺失,则返回 False

案例

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [None, 5, 6], 'C': [7, None, 9]})
print(df.isnull())
print(df.notnull())

运行结果:
在这里插入图片描述

三、DataFrame

DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。其结构图示意图,如下所示:
在这里插入图片描述
Dataframe和Series的关系:

在 Pandas 中,DataFrame 的每一行或每一列都是一个 Series

DataFrame 是一个二维表格,可以看作是由多个 Series 组成的。

如何区分行和列的 Series

列的 Series

  • 标签是行索引。
  • 值是该列的所有行数据。

行的Series:

  • 标签是列名。
  • 值是该行的所有列数据。

3.1 创建 DataFrame 对象

创建 DataFrame 对象的方式:

  • 列表
  • 字典
  • Series
  • Numpy ndarrays
  • 另一个 DataFrame

3.1.1 创建 DataFrame 空对象

import pandas as pd

# 创建空DataFrame 对象
df = pd.DataFrame()
print(df)

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

如果缺失元素,则用NaN代替缺失值

def list():
    data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
    print(pd.DataFrame(data))

运行上面这个函数,由于第0行缺少一个值,则用NaN代替

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

def zidian():
    data = {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
    print(pd.DataFrame(data))

运行结果如图:
在这里插入图片描述

3.1.4 Series 创建 DataFrame 对象

案例一

def seven():
    data = {'one': pd.Series([1, 2, 3], index=['a', 'b', 'c']),
            'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
    result = pd.DataFrame(data=data)
    print(result)

运行结果:
在这里插入图片描述

案例二

def zidians():
    dic = {"nane": pd.Series([1, 2, 3],index=['a','b','c']), "age": pd.Series([4, 5, 6])}
    print(pd.DataFrame(dic))

运行结果:
在这里插入图片描述

3.2 列索引操作

DataFrame 可以使用列索(columns index)引来完成数据的选取、添加和删除操作

3.2.1选取数据

# 使用pd.Series()创建Series对象会将索引赋值给[0,1,2],所以打印为NaN
# 解决方式:使用pd.Series()创建Series对象时,将索引赋值给Series对象的name属性,即可解决
df = pd.DataFrame({"name":pd.Series(["张三","李四","王五"]), "age":np.arange(3)},index=["a","b","c"])
 #解决方法:"name":pd.Series(["张三","李四","王五"],index=["a","b","c")
print(df)
'''
  name  age
a  NaN    0
b  NaN    1
c  NaN    2
'''
df = pd.DataFrame({"name": ["张三", "李四", "王五"], "age": np.arange(3)}, index=["a", "b", "c"])
print(df)
'''
  name  age
a  张三    0
b  李四    1
c  王五    2
'''

3.2.2 添加数据

1、添加一个空列

data = {
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
}
df = pd.DataFrame(data)
df["D"] = None
print(df)

在这里插入图片描述

2、添加新列,直接赋值添加

df = pd.DataFrame({'name': ['Tom', 'Nick', 'John'], 'age': [20, 21, 19]})
df['city'] = ['Beijing', 'Shanghai', 'Guangzhou']
print(df)

在这里插入图片描述

3、通过assign方法添加新列

df = pd.DataFrame({'one': [1, 2, 3], 'two': [2, 4, 6]})
df1 = df.assign(three = df['one'] + df['two']).assign(four = [100,200,300])
print(df1)

在这里插入图片描述

4、在指定的位置插入新列

使用insert方法在指定位置插入新列,参数:

  • loc: 插入位置的列索引。
  • column: 新列的名称。
  • value: 要插入的 Series。
data = {
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
}
df = pd.DataFrame(data)
df.insert(loc=1,column="D",value=[10,20,30])
print(df)

在这里插入图片描述

3.2.3 修改数据

案例1:修改列的值

data = {
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
}
df = pd.DataFrame(data)
df["B"] = [666,777,888]
print(df)

# 广播
df["C"] = 100
print(df)

在这里插入图片描述
案例2:修改列名

df = pd.DataFrame(np.arange(12).reshape(3,4),columns=['A','B','C','D'])
print(df)
#    A  B   C   D
# 0  0  1   2   3
# 1  4  5   6   7
# 2  8  9  10  11

df.columns = ['a','b','c','d']
print(df)
#    a  b   c   d
# 0  0  1   2   3
# 1  4  5   6   7
# 2  8  9  10  11

案例3:使用 rename 方法修改列名(在案例二的基础上)

df1 = df.rename(columns={'a':'A','b':'B'})
print(df1)
#    A  B   c   d
# 0  0  1   2   3
# 1  4  5   6   7
# 2  8  9  10  11

案例4:使用astype()修改列的数据类型

# 修改数据类型 astype()
data = {'A':[1,2,3],
        'B':[4,5,6],
        'C':[7,8,9]
}

df = pd.DataFrame(data)
print(df.dtypes)
df['A'] = df['A'].astype(float)
print(df.dtypes)

在这里插入图片描述

http://www.dtcms.com/a/108819.html

相关文章:

  • MetaBase Mysql8.0连接不上
  • 怎么理解量子比特模型,迁移到量子计算机开始编程
  • 飞桨新一代框架3.0正式发布:加速大模型时代的技术创新与产业应用
  • AF3 OpenFoldMultimerDataset类解读
  • 洛谷题单3-P1035 [NOIP 2002 普及组] 级数求和-python-流程图重构
  • JavaScript日期对象
  • Python 编程实战:打造高效便捷的目录结构生成器
  • 踩坑ubuntu24.04 编译vtk9.3.1的安卓版本
  • 前端开发技术演进与就业现实:顺应时代方能不被淘汰-优雅草卓伊凡
  • ubantu执行sudo chown -R username xxx(文件夹)命令失效
  • 推荐系统(二十一):基于MaskNet的商品推荐CTR模型实现
  • OpenCV 图形API(12)用于计算图像或矩阵的平均值函数mean()
  • dify开启多租户模式
  • Coco-AI 支持嵌入,让你的网站拥有 AI 搜索力
  • 基于javaweb的SSM+Maven机房管理系统设计与实现(源码+文档+部署讲解)
  • 智慧高炉厂可视化:钢铁行业的数字化转型之路
  • leetcode31.下一个排列
  • 42.C++11-右值引用与移动语义/完美转发
  • Real-Time Anomaly Detection of Network Traffic Basedon CNN
  • 动、静态创建任务
  • 实战打靶集锦-37-Wpwnvm
  • GUI-Guider 按钮按下 选项卡 右移动一个,到最右边停下
  • BMS电池关键参数及其含义
  • Lua中debug调试函数详解
  • 【DLI】Generative AI with Diffusion Models通关秘籍
  • Redis基础知识-2
  • 从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.1.1百度ERNIE、阿里通义千问的技术对比
  • 程序化广告行业(56/89):S2S对接与第三方广告监测全解析
  • 《第三次世界大战》第七章:破碎的未来
  • 《实战AI智能体》MCP对Agent有哪些好处