AIGC基础工具-用于数据分析和数据处理的核心库Pandas介绍

在这里插入图片描述

文章目录

      • 1. Pandas 的核心数据结构
        • 1.1 Series
          • 创建 `Series`
          • Series 重要属性
          • 示例
        • 1.2 DataFrame
          • 创建 `DataFrame`
          • DataFrame 重要属性
          • 示例
      • 2. Pandas 数据的导入与导出
        • 2.1 读取 CSV 文件
        • 2.2 读取 Excel 文件
        • 2.3 写入 CSV 文件
        • 2.4 读取 JSON 文件
      • 3. Pandas 的数据操作
        • 3.1 数据选择和过滤
          • 选择列
          • 选择行
          • 条件筛选
        • 3.2 数据排序
        • 3.3 数据的添加与删除
          • 添加新列
          • 删除列或行
      • 4. 数据清洗与预处理
        • 4.1 处理缺失值
          • 检查缺失值
          • 填充缺失值
          • 删除含有缺失值的行或列
        • 4.2 处理重复值
        • 4.3 数据类型转换
        • 4.4 更改列名
      • 5. 数据聚合与分组操作
        • 5.1 数据分组
        • 5.2 聚合操作
          • 示例
      • 6. Pandas 的时间序列处理
        • 6.1 生成时间序列
        • 6.2 设置时间索引
        • 6.3 处理时间数据
      • 7. Pandas 的合并、连接与拼接
        • 7.1 merge():SQL 风格的合并
        • 7.2 concat():拼接数据
        • 7.3 join():索引对齐的合并
      • 8. Pandas 与其他库的结合
        • 8.1 与 Matplotlib 的结合
      • 9. Pandas 的性能优化
        • 9.1 使用 `category` 数据类型
        • 9.2 使用 `chunk` 分块读取大文件
      • 10. Pandas 的应用场景

Pandas 是 Python 中用于数据分析和数据处理的核心库。它建立在 NumPy 之上,提供了更加高级和便捷的数据结构和工具,尤其适合处理结构化数据(如表格数据)。Pandas 的功能强大且易用,广泛应用于数据科学、金融、统计、机器学习等领域。以下将详细介绍 Pandas 的核心概念、功能及应用。


1. Pandas 的核心数据结构

Pandas 主要提供两种核心数据结构:

1.1 Series

Series 是一种一维的数据结构,类似于 Python 的列表或 NumPy 的一维数组,但增加了标签索引 (index),即每个元素都有一个与之关联的索引值。

创建 Series
import pandas as pd# 从列表创建 Series
s = pd.Series([10, 20, 30, 40])# 从字典创建 Series
s_dict = pd.Series({'a': 1, 'b': 2, 'c': 3})print(s)
print(s_dict)
Series 重要属性
  • index:Series 的索引标签。
  • values:Series 中的值。
  • dtype:数据类型。
示例
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print("索引:", s.index)
print("值:", s.values)
1.2 DataFrame

DataFrame 是 Pandas 中最常用的二维数据结构,类似于数据库中的表格。它由多个 Series 组成,每一列的数据都有相同的类型,但每列之间可以有不同类型的数据。

创建 DataFrame
# 从字典创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'Salary': [50000, 60000, 70000]}df = pd.DataFrame(data)
print(df)
DataFrame 重要属性
  • columns:列标签。
  • index:行标签。
  • values:DataFrame 中的数据值,返回一个 NumPy 数组。
示例
print("列标签:", df.columns)
print("行标签:", df.index)
print("数据:", df.values)

2. Pandas 数据的导入与导出

Pandas 支持多种数据格式的导入和导出,常见的有 CSV、Excel、SQL 数据库、JSON 等格式。

2.1 读取 CSV 文件
df = pd.read_csv('data.csv')
2.2 读取 Excel 文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
2.3 写入 CSV 文件
df.to_csv('output.csv', index=False)  # index=False 防止保存索引列
2.4 读取 JSON 文件
df = pd.read_json('data.json')

3. Pandas 的数据操作

Pandas 提供了丰富的数据操作功能,包括数据选择、过滤、排序、聚合等。

3.1 数据选择和过滤
选择列
# 选择单列
age_column = df['Age']# 选择多列
subset = df[['Name', 'Salary']]
选择行

使用 loc[] 根据标签选择,或使用 iloc[] 根据位置选择。

# 根据标签选择行
row = df.loc[1]  # 选择索引为 1 的行# 根据位置选择行
row = df.iloc[0:2]  # 选择前两行
条件筛选
# 选择年龄大于 30 的行
df_filtered = df[df['Age'] > 30]
3.2 数据排序

Pandas 提供了按行或列排序的功能。

# 按列排序
df_sorted = df.sort_values(by='Age', ascending=False)
3.3 数据的添加与删除
添加新列
# 计算新列 "Bonus",为 Salary 的 10%
df['Bonus'] = df['Salary'] * 0.1
删除列或行
# 删除 "Bonus" 列
df = df.drop(columns=['Bonus'])# 删除第一行
df = df.drop(index=0)

4. 数据清洗与预处理

数据清洗是数据分析中的关键步骤,Pandas 提供了处理缺失值、重复值、类型转换等多种功能。

4.1 处理缺失值
检查缺失值
df.isnull()  # 返回布尔值 DataFrame,True 表示缺失值
df.isnull().sum()  # 每列中缺失值的个数
填充缺失值
# 用 0 填充缺失值
df_filled = df.fillna(0)# 用列的平均值填充
df['Age'] = df['Age'].fillna(df['Age'].mean())
删除含有缺失值的行或列
# 删除含有缺失值的行
df_dropped = df.dropna()
4.2 处理重复值
# 检查重复值
df.duplicated()# 删除重复值
df_cleaned = df.drop_duplicates()
4.3 数据类型转换
df['Age'] = df['Age'].astype(float)  # 将 Age 列转换为浮点数类型
4.4 更改列名
df.rename(columns={'Name': 'Full Name'}, inplace=True)

5. 数据聚合与分组操作

Pandas 提供了强大的数据分组与聚合操作,通过 groupby() 方法,可以对数据进行分组后进行各种聚合运算。

5.1 数据分组
grouped = df.groupby('Age')  # 按照 Age 列进行分组
5.2 聚合操作
  • sum():求和。
  • mean():求平均。
  • count():计数。
示例
# 按 Age 分组并计算 Salary 的平均值
grouped_mean = df.groupby('Age')['Salary'].mean()

6. Pandas 的时间序列处理

Pandas 有强大的时间序列处理功能,可以轻松处理带有日期的时间索引、时间戳、周期数据等。

6.1 生成时间序列
# 生成日期范围
date_range = pd.date_range(start='2023-01-01', periods=10, freq='D')
6.2 设置时间索引
df['Date'] = pd.to_datetime(df['Date'])  # 将列转换为日期格式
df.set_index('Date', inplace=True)  # 将 Date 列设置为索引
6.3 处理时间数据
# 按月份聚合
df.resample('M').sum()  # 按月份重采样并求和

7. Pandas 的合并、连接与拼接

Pandas 提供了 SQL 风格的数据合并操作,包括 merge()join()concat()

7.1 merge():SQL 风格的合并
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['A', 'B', 'D'], 'value2': [4, 5, 6]})df_merged = pd.merge(df1, df2, on='key', how='inner')  # 内连接
7.2 concat():拼接数据
df_concat = pd.concat([df1, df2], axis=0)  # 按行拼接
7.3 join():索引对齐的合并
df1.set_index('key', inplace=True)
df2.set_index('key', inplace=True)df_joined = df1.join(df2, how='outer')  # 外连接

8. Pandas 与其他库的结合

Pandas 常与其他库结合使用,如:

  • Matplotlib:进行数据可视化。
  • SciPy:用于统计分析。
  • Scikit-learn:用于机器学习模型训练。
8.1 与 Matplotlib 的结合
import matplotlib.pyplot as pltdf['Age'].plot(kind='hist')  # 绘制年龄的直方图
plt.show()

9. Pandas 的性能优化

虽然 Pandas 功能强大,但在处理大规模数据时,性能

可能会成为瓶颈。以下是一些优化技巧:

9.1 使用 category 数据类型

对于重复值较多的字符串列,可以将其转换为 category 类型,减少内存消耗。

df['Category'] = df['Category'].astype('category')
9.2 使用 chunk 分块读取大文件
chunk_iter = pd.read_csv('large_file.csv', chunksize=1000)  # 每次读取 1000 行
for chunk in chunk_iter:process(chunk)  # 对每块数据进行处理

10. Pandas 的应用场景

  • 数据分析:Pandas 提供了方便的数据处理工具,适用于数据清洗、统计分析。
  • 金融领域:用于时间序列数据的处理和金融模型的构建。
  • 机器学习:作为特征工程的主要工具,Pandas 被广泛应用于数据预处理。
  • 统计与科学计算:可以与 NumPy、SciPy 结合进行统计建模和数据分析。

Pandas 凭借其强大的数据处理和分析能力,已成为数据科学领域不可或缺的工具。


结束语
Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IPsec-Vpn

网络括谱图 IPSec-VPN 配置思路 1 配置IP地址 FWA:IP地址的配置 [FW1000-A]interface GigabitEthernet 1/0/0 [FW1000-A-GigabitEthernet1/0/0]ip address 10.1.1.1 24 [FW1000-A]interface GigabitEthernet 1/0/2 [FW1000-A-GigabitEthernet1/0/2]ip address

开源 AI 智能名片与 S2B2C 商城小程序:嫁接权威实现信任与增长

摘要:本文探讨了嫁接权威在产品营销中的重要性,并结合开源 AI 智能名片与 S2B2C 商城小程序,阐述了如何通过与权威关联来建立客户信任,提升产品竞争力。强调了在当今商业环境中,巧妙运用嫁接权威的方法,能够…

AI 智能名片链动 2+1 模式商城小程序中的体验策略

摘要:本文探讨了在 AI 智能名片链动 21 模式商城小程序中,体验策略如何服务于用户体验,以及与产品策略的区别。重点分析了该小程序如何通过关注用户在使用过程中的流畅度、视觉体感等方面,实现“让用户用得爽”的目标,…

JS中的事件和DOM操作

一、事件[重要] 1、 事件介绍 事件: 就是发生在浏览器(页面)上一件事,键盘事件,鼠标事件,表单事件,加载事件等等 2、 事件绑定方式 事件要想发生,就得将事件和标签先绑定(确定哪个标签发生什么事情,又有什么响应) 一个完整的事件有三部分 事件源(标签),哪里发出的事. 什么事(…

德勤校招网申笔试综合能力测试SHL题库与面试真题攻略

德勤的综合能力测试(General Ability)是其校园招聘在线测评的关键环节,旨在评估应聘者的多项认知能力。以下是对这部分内容的全面整合: 综合能力测试(General Ability) 测试时长为46分钟,包含…

Linux 文件权限详解与管理

文章目录 前言一、文件权限概述1. 权限表示格式2. 权限组合值 二、查看文件权限三、修改文件所有者与所属组1. 使用 chown 修改文件所有者2. 使用 chgrp 修改文件所属组3. 添加所有者 四、修改文件权限1. 符号方式2. 八进制方式3. 实际修改 总结 前言 在 Linux 系统中&#xf…

VS Code调整字体大小

##在工程目录底下.vscode/settings.json添加设置参数 {"editor.fontSize": 15,"window.zoomLevel": 1.5 }

MySQL—存储过程详解

基本介绍 存储过程和函数是数据库中预先编译并存储的一组SQL语句集合。它们的主要目的是提高代码的复用性、减少数据传输、简化业务逻辑处理,并且一旦编译成功,可以永久有效。 存储过程和函数的好处 提高代码的复用性:存储过程和函数可以在…

Redis6.0.9配置redis集群

写在前面 最近在完成暑期大作业,期间要将项目部署在云服务器上,其中需要进行缓存的配置,决定使用Redis,为了使系统更加健壮,选择配置Redis-Cluster。由于服务器资源有限,在一台服务器上运行6个Redis Instan…

docker desktop windows stop

服务docker改为启动 cmd下查看docker版本 {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://hub.atomgit.com/"]…

三目运算判断字母大小写-C语言

1.问题: 输入一个字符,判别它是否为大写字母,如果是,将它转换成小写,如果不是,不转换。然后输出最后得到的字符,要求使用三目运算符。 2.解答: 用条件表达式来处理,当字…

Go基础学习04-变量重声明;类型转换;类型断言;Unicode代码点;类型别名;潜在类型

目录 变量重声明 类型断言 类型转换 类型转换注意事项 Unicode代码点 类型别名、潜在类型 类型别名的意义 变量重声明 编写代码: package mainimport "fmt"var container []string{"Beijing", "Shanghai"}func main() {fmt.Pr…

快递物流短信API接口代码

官网:快递鸟 API参数 用户信息类 一.短信模版 1.接口说明 使用快递鸟短信功能时,预先设置好短信模板和对应的发送规则,快递鸟短信API将根据设置的好的模板和规则,进行短信的发送和反馈。 (1)仅支持Json格式。 (2)请求指令810…

数据结构-2.9.双链表

一.双链表与单链表的对比&#xff1a; 二.双链表的初始化(带头结点)&#xff1a; 1.图解&#xff1a; 2.代码演示&#xff1a; #include<stdio.h> #include<stdlib.h> ​ //定义双链表结构体 typedef struct DNode {int data;struct DNode *prior;//前驱指针即指…

软件测试基础面试题【最新-附带答案】

1、介绍一下你上一家公司的测试流程吧&#xff1f; 1、产品经理拿下项目 2、所有技术人员&#xff08;开发&#xff0c;测试&#xff0c;运维&#xff0c;UI&#xff09;召开需求分析会议 3、测试组内召开会议&#xff08;明确测试需求&#xff0c;分配人员任务&#xff09;…

Spring Boot 学习之路 -- Service 层

前言 最近因为业务需要&#xff0c;被拉去研究后端的项目&#xff0c;代码框架基于 Spring Boot&#xff0c;对我来说完全小白&#xff0c;需要重新学习研究…出于个人习惯&#xff0c;会以 Blog 文章的方式做一些记录&#xff0c;文章内容基本来源于「 Spring Boot 从入门到精…

(补充)3DMAX初级小白班第三课:创建物体+物体材质编辑

1.可以点这里来改变材质颜色&#xff08;但是通过材质编辑器给了材质以后就只能在这里改线框颜色&#xff09;。但一般就是用灰色材质和黑色线框 2.材质编辑器快捷键为m 右键可更改个数&#xff0c;最多24个 将材质指定选定对象 如何把材质编辑器面板改成旧版 按f10 改成扫描…

计算机毕设选题推荐-基于python的电子健康信息分析系统【源码+文档+调试】

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、电子健康信息…

【Linux】解锁管道通信和共享内存通信,探索进程间通信的海洋

目录 引言&#xff1a; 1、进程间通信基础介绍 1.1为什么需要在进程之间通信&#xff1f; 1.2进程间通信是什么&#xff1f; 1.3我们具体如何进行进程间的通信呢&#xff1f; a.一般规律&#xff1a; b.具体做法 2.管道 2.1什么是管道 2.2匿名管道&#xff1a; 创建…

行业展望:线缆行业发展

线缆行业作为国民经济中最大的配套行业之一&#xff0c;在我国机械工业的细分行业中占据举足轻重的地位&#xff0c;仅次于汽车整车制造和零部件及配件制造业。作为电气化、信息化、智能化社会中重要的基础性配套产业&#xff0c;电线电缆被誉为国民经济的"血管"与&q…