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

day25学习Pandas库

文章目录

  • 三、Pandas库
    • 4.函数计算
      • 7.合并
      • 8.随机抽样
      • 9.空值处理
        • 9.1检测空值
        • 9.2填充空值
        • 9.3删除空值行/列
    • 5.读取CSV文件
      • 5.1 to_csv()
      • 5.2 read_csv()
    • 6.绘图

三、Pandas库

4.函数计算

7.合并

merge 函数用于将两个 DataFrame 对象根据一个或多个键进行合并

函数:

pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, 
left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), 
copy=True, indicator=False, validate=None)

参数

  • left:左侧的 DataFrame 对象。

  • right:右侧的 DataFrame 对象。

  • how:合并方式,可以是 ‘inner’、‘outer’、‘left’ 或 ‘right’。默认为 ‘inner’。

    • ‘inner’:内连接,返回两个 DataFrame 共有的键。
    • ‘outer’:外连接,返回两个 DataFrame 的所有键。
    • ‘left’:左连接,返回左侧 DataFrame 的所有键,以及右侧 DataFrame 匹配的键。
    • ‘right’:右连接,返回右侧 DataFrame 的所有键,以及左侧 DataFrame 匹配的键。
  • on:用于连接的列名。如果未指定,则使用两个 DataFrame 中相同的列名。

  • left_on 和 right_on:分别指定左侧和右侧 DataFrame 的连接列名。

  • left_index 和 right_index:布尔值,指定是否使用索引作为连接键。

  • sort:布尔值,指定是否在合并后对结果进行排序。

  • suffixes:一个元组,指定当列名冲突时,右侧和左侧 DataFrame 的后缀。

  • copy:布尔值,指定是否返回一个新的 DataFrame。如果为 False,则可能修改原始 DataFrame。

  • indicator:布尔值,如果为 True,则在结果中添加一个名为 __merge 的列,指示每行是如何合并的。

  • validate:验证合并是否符合特定的模式。

示例1:内连接

import pandas as pd

# 创建两个示例 DataFrame
left = pd.DataFrame({
    'key': ['K0', 'K1', 'K2', 'K3'],
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
})
right = pd.DataFrame({
    'key': ['K0', 'K1', 'K2', 'K4'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
})
# 内连接-只保留共用的
result = pd.merge(left, right, on='key')
print(result)

#输出:K3、K4被忽略
  key   A   B   C   D
0  K0  A0  B0  C0  D0
1  K1  A1  B1  C1  D1
2  K2  A2  B2  C2  D2

示例2:左连接

# 数据同上
# 左连接,以左侧表为准-左表用而右表没有就填nan
result = pd.merge(left, right, on='key', how='left')
print(result)
# 输出:
  key   A   B    C    D
0  K0  A0  B0   C0   D0
1  K1  A1  B1   C1   D1
2  K2  A2  B2   C2   D2
3  K3  A3  B3  NaN  NaN

8.随机抽样

语法

DataFrame.sample(n=None, frac=None, replace=False, 
weights=None, random_state=None, axis=None)

参数

  • n:要抽取的行数
  • frac:抽取的比例,比如 frac=0.5,代表抽取总体数据的50%
  • replace:布尔值参数,表示是否以有放回抽样的方式进行选择,默认为 False,取出数据后不再放回
  • weights:可选参数,代表每个样本的权重值,参数值是字符串或者数组
  • random_state:可选参数,控制随机状态,默认为 None,表示随机数据不会重复;若为 1 表示会取得重复数据
  • axis:表示在哪个方向上抽取数据(axis=1 表示列/axis=0 表示行)

示例:

import pandas as pd  

df = pd.DataFrame({
    "company": ['百度', '阿里', '腾讯'],
    "salary": [43000, 24000, 40000],
    "age": [25, 35, 49]
})
print('随机选择两行:')
print(df.sample(n=2, axis=0))
print('随机选择一列:')
print(df.sample(n=1, axis=1))
print('总体的50%:') # 小数四舍五入
print(df.sample(axis=0, frac=0.5))

9.空值处理

9.1检测空值
  • isnull() 和 notnull() 用于检测 DataFrame 或 Series 中的空值,返回一个布尔值的 DataFrame 或 Series。
  • 示例:
import pandas as pd
import numpy as np

# 创建一个包含空值的示例 DataFrame
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)

# 检测空值
is_null = df.isnull()
print(is_null)
# 输出
       A      B      C
0  False  False  False
1  False   True  False
2   True   True  False
3  False  False  False
9.2填充空值

fillna() :用 指定的值 填充 DataFrame 或 Series 中的空值

示例:

import pandas as pd
import numpy as np
# 创建一个包含空值的示例 DataFrame
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)

# 用 0 填充空值
df_filled = df.fillna(0)
print(df_filled)
# 输出
     A    B   C
0  1.0  5.0   9
1  2.0  0.0  10
2  0.0  0.0  11
3  4.0  8.0  12
9.3删除空值行/列

dropna(axios=0) 方法用于删除 DataFrame 或 Series 中的空值

  • 参数axios:删除空值所在的行或列,默认0删除行
  • 示例:
import pandas as pd
import numpy as np
# 创建一个包含空值的示例 DataFrame
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)

# 删除包含空值的行
df_dropped = df.dropna()
print(df_dropped)
#输出:
     A    B   C
0  1.0  5.0   9
3  4.0  8.0  12

5.读取CSV文件

CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本);

CSV 是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。

5.1 to_csv()

to_csv() 方法将 DataFrame 存储为 csv 文件

案例:

import pandas as pd

# 创建一个简单的 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)

# 将 DataFrame 导出为 CSV 文件
df.to_csv('output.csv', index=False)

5.2 read_csv()

read_csv() 表示从 CSV 文件中读取数据,并创建 DataFrame 对象。

案例:

import pandas as pd
df = pd.read_csv('output.csv')
print(df)

6.绘图

Pandas 对 Matplotlib 绘图软件包的基础上单独封装了一个plot()接口,调用该接口可以实现常用的绘图操作

注意:只用 pandas 绘制图片可能可以编译,但是不会显示图片,需要使用 matplotlib 库,调用 show() 方法显示图形。

  • 参数:kind =" ",指定画什么类型的图

示例:

import pandas as pd
import matplotlib.pyplot as plt
# 创建一个示例 DataFrame
data = {
    'A': [1, 2, 3, 4, 5],
    'B': [10, 20, 25, 30, 40]
}
df = pd.DataFrame(data)

# 绘制折线图
df.plot(kind='line')
# 显示图表
plt.show()

# 绘制柱状图
df.plot(kind='bar')
# 显示图表
plt.show()


# 绘制直方图
df['A'].plot(kind='hist')
# 显示图表
plt.show()

# 绘制散点图
df.plot(kind='scatter', x='A', y='B')
# 显示图表
plt.show()
http://www.dtcms.com/a/122867.html

相关文章:

  • mysql的主从复制
  • 中文语义相似度 + 去除标签后的网页文本(爬虫数据)
  • 彩色路径 第32次CCF-CSP计算机软件能力认证
  • 服务器运维ACL访问控制列表如何配置
  • 【Leetcode-Hot100】字母异位词分组
  • echarts图表相关
  • 【智能体开发】智能体前后端开发方案
  • 信奥赛之c++课后练习题及解析(算数运算符)
  • Java学习总结-线程池
  • 【NLP 56、实践 ⑬ LoRA完成NER任务】
  • 【golang】堆和栈的区别
  • MySQL主从复制技术详解:原理、实现与最佳实践
  • Docker与Kubernetes在ZKmall开源商城容器化部署中的应用
  • Linux内核页表缓存(TLB)与巨型页
  • 使用Alamofire下载网站首页内容
  • PDFBox/Itext5渲染生成pdf文档
  • Php laravel 留言板 curd 实战
  • 2025数据库系统工程师上午考试知识点汇总
  • 【C++游戏引擎开发】第10篇:AABB/OBB碰撞检测
  • error: RPC failed; HTTP 408 curl 22 The requested URL returned error: 408
  • 【大模型理论篇】关于生成式模型中联合分布概率学习必要性以及GPT是生成式模型的讨论
  • 【ida】ida笔记
  • C语言指针和函数
  • CSS 笔记——Flexbox(弹性盒布局)
  • react-router children路由报错
  • 配置SSMS 让数据库中会话时长大于30秒的自动终止
  • python爬虫发送请求的方法汇总
  • LeetCode 33 搜索旋转排序数组
  • Tailwind CSS的五节课教学计划
  • 动态科技感html导航网站源码