Pandas使用教程:从入门到实战的数据分析利器

一、Pandas基础入门

在这里插入图片描述

1.1 什么是Pandas

Pandas是Python生态中核心的数据分析库,提供高效的数据结构(Series/DataFrame)和数据分析工具。其名称源于"Panel Data"(面板数据)和"Python Data Analysis"的组合,由Wes McKinney于2008年开发,现已成为数据科学领域的标准工具。

1.2 核心数据结构

1.2.1 Series:一维标记数组

import pandas as pd
s = pd.Series([5, 2, 3], index=['A', 'B', 'C'])
  • 特性:类似带标签的NumPy数组
  • 操作:s['A'] 获取值,s + 2 向量运算

1.2.2 DataFrame:二维表格结构

df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'City': ['NY', 'SF', 'LA']
})
  • 特性:支持异构数据类型,类似Excel表格
  • 核心属性:df.shape, df.dtypes, df.columns

二、数据加载与输出

2.1 数据导入

# CSV文件
df = pd.read_csv('data.csv', parse_dates=['date_column'])# Excel文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')# JSON数据
df = pd.read_json('data.json', orient='records')
  • 高级参数:skiprows, nrows, chunksize(分块读取)

2.2 数据导出

df.to_csv('cleaned_data.csv', index=False, encoding='utf-8')
df.to_excel('report.xlsx', sheet_name='Results')

三、数据清洗核心技巧

3.1 缺失值处理

3.1.1 检测缺失值

df.isnull().sum()  # 各列缺失值统计

3.1.2 处理策略

# 删除缺失值
df.dropna(subset=['Age'], inplace=True)# 填充缺失值
df['Salary'].fillna(df['Salary'].mean(), inplace=True)

3.2 数据去重

# 检测重复行
df.duplicated().sum()# 删除重复行
df.drop_duplicates(subset=['ID'], keep='last', inplace=True)

3.3 数据类型转换

df['BirthDate'] = pd.to_datetime(df['BirthDate'], format='%Y-%m-%d')
df['Category'] = df['Category'].astype('category')

四、数据选择与过滤

4.1 基础索引

# 选择列
df[['Name', 'Age']]# 选择行(前5行)
df.head()

4.2 高级索引

4.2.1 loc标签索引

df.loc[df['Age'] > 30, ['Name', 'City']]

4.2.2 iloc位置索引

df.iloc[1:4, 0:2]  # 选取2-4行,1-2列

4.2.3 布尔索引

mask = (df['Score'] >= 80) & (df['Attempts'] < 5)
df[mask]

五、数据操作与转换

5.1 列操作

# 添加新列
df['Salary'] = df['Salary'] * 1.1  # 涨薪10%# 删除列
df.drop('TempColumn', axis=1, inplace=True)# 重命名列
df.rename(columns={'OldName': 'NewName'}, inplace=True)

5.2 数据合并

5.2.1 横向合并

pd.merge(df1, df2, on='ID', how='inner')  # 支持inner/left/right/outer

5.2.2 纵向合并

pd.concat([df1, df2], axis=0, ignore_index=True)

5.3 分组聚合

df.groupby('Department')['Salary'].agg(['mean', 'sum'])

六、高级功能应用

6.1 时间序列处理

# 创建时间范围
dates = pd.date_range('20250101', periods=365)# 重采样
df.resample('M').mean()  # 月度重采样# 滑动窗口
df['RollingMean'] = df['Value'].rolling(window=7).mean()

6.2 文本处理

# 字符串方法
df['Name'].str.upper()# 正则表达式
df['Email'].str.extract(r'(\w+)@(\w+\.com)')

6.3 数据可视化集成

import matplotlib.pyplot as pltdf['Age'].plot(kind='hist', bins=10)
plt.savefig('age_distribution.png')

七、性能优化技巧

7.1 内存优化

# 修改数据类型
df['ID'] = df['ID'].astype('int32')# 分类数据类型
df['Category'] = df['Category'].astype('category')

7.2 向量化操作

# 避免循环,使用内置函数
df['NewCol'] = df['Col1'] + df['Col2']

7.3 分块处理

chunk_iter = pd.read_csv('big_data.csv', chunksize=10000)
for chunk in chunk_iter:process(chunk)

八、实战案例:电商数据分析

8.1 案例背景

分析某电商平台用户行为数据,包含:

  • 用户ID、商品ID、购买数量、金额、时间戳

8.2 数据预处理

# 转换时间戳
df['OrderTime'] = pd.to_datetime(df['OrderTime'])# 计算客单价
df['UnitPrice'] = df['Amount'] / df['Quantity']

8.3 深度分析

# 用户购买周期分析
df.groupby('UserID')['OrderTime'].diff().mean()# 商品关联分析
pd.crosstab(df['ProductA'], df['ProductB'])

8.4 结果可视化

import seaborn as snssns.boxplot(x='Category', y='Sales', data=df)
plt.title('Category Sales Distribution')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('sales_analysis.png')

九、学习资源推荐

官方文档:https://pandas.pydata.org/docs/
实战书籍:《利用Python进行数据分析》
练习平台:Kaggle、DataCamp
进阶资源:Dask(并行计算)、Modin(分布式Pandas)

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

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

相关文章

NuttX Socket 源码学习

概述 NuttX 的 socket 实现是一个精心设计的网络编程接口&#xff0c;提供了标准的 BSD socket API。该实现采用分层架构设计&#xff0c;支持多种网络协议族&#xff08;如 TCP/IP、UDP、Unix域套接字等&#xff09;&#xff0c;具有良好的可扩展性和模块化特性。 整体架构设…

基于YOLO的语义分割实战(以猪的分割为例)

数据集准备 数据集配置文件 其实语义分割和目标检测类似&#xff0c;包括数据集制备、存放格式基本一致像这样放好即可。 然后需要编写一个data.yaml文件&#xff0c;对应的是数据的配置文件。 train: C:\图标\dan\语义分割pig\dataset\train\images #绝对路径即可 val: C:\…

钉钉智能会议室集成指纹密码锁,临时开门密码自动下发

在当今快节奏的工作环境中&#xff0c;会议室的高效管理和使用成为了企业提升工作效率的关键一环。湖南某知名企业近期成功升级了原有使用的钉钉智能会议室系统&#xff0c;并配套使用了启辰智慧联网指纹密码锁&#xff0c;实现了会议室管理的智能化升级&#xff0c;提升了会议…

C++讲解—类(1)

类 在 C 中&#xff0c;类是一个关键概念&#xff0c;凭借其封装和继承的特性&#xff0c;能够助力程序员之间实现高效的分工协作&#xff0c;共同完成复杂的大型项目。我们先从最简单的概念入手&#xff0c;再进行更深层次的了解和应用。 1. 类的定义 类是用户自定义的一种…

什么是Hadoop Yarn

Hadoop YARN&#xff1a;分布式集群资源管理系统详解 1. 什么是YARN&#xff1f; YARN&#xff08;Yet Another Resource Negotiator&#xff09;是 Apache Hadoop 生态系统中的资源管理和作业调度系统&#xff0c;最初在 Hadoop 2.0 中引入&#xff0c;取代了 Hadoop 1.0 的…

项目开发中途遇到困难的解决方案

1. 正视困难&#xff0c;避免逃避 开发遇阻时&#xff0c;退缩会带来双重损失&#xff1a;既成为"失败者逃兵"&#xff0c;又损害职业信心1。 行动建议&#xff1a; 立即向团队透明化问题&#xff08;如进度延迟、技术瓶颈&#xff09;&#xff0c;避免问题滚雪球…

Blender硬表面建模篇收集学习建模过程中的Demo

c 齿轮 创建一个圆柱体&#xff0c;选择侧面的所有&#xff0c;然后进行隔断选择&#xff0c;两次挤出面&#xff0c;一次缩放面&#xff0c;通过圆柱面三次插入面缩放挤出得到齿轮中心&#xff0c;选中齿轮的锯齿中间&#xff0c;然后进行相同周长选择行选择齿与齿中间的面&…

Chromium 136 编译指南 macOS篇:获取源代码(四)

1. 引言 在现代软件开发的宏大版图中&#xff0c;源代码的获取往往标志着从理论探索向实践应用的关键转折。对于Chromium 136这样一个拥有超过2500万行代码、涉及数百个第三方库的超大规模开源项目而言&#xff0c;源代码的获取不仅仅是简单的文件下载&#xff0c;更是一个涉及…

OpenCV C++ 边缘检测与图像分割

一、边缘检测 在数字图像处理领域&#xff0c;边缘检测是一项至关重要的基础技术。它如同为图像赋予 “骨架”&#xff0c;帮助计算机快速识别图像中的物体轮廓、形状与结构&#xff0c;广泛应用于目标识别、图像分割、图像配准等多个领域。 1.1 概念 边缘检测的核心目标是找…

线段树(2025年6月14日)

原文 https://www.beiweidoge.top/132.html P1&#xff1a;求最大值1 题目描述 题目描述 小明给了你n个数字&#xff0c;你需要依次输出&#xff1a; 1到n的最大值&#xff0c;1到n/2的最大值&#xff0c;n/21到n的最大值&#xff0c;1到n/4的最大值&#xff0c;n/41到n/2…

渗透实战PortSwigger Labs AngularJS DOM XSS利用详解

本Lab学习到关于AngularJS的 xss 漏洞利用 直接输入回显页面&#xff0c;但是把<>进了 html 编码了 当我们输入{{11}}&#xff0c;没有当作字符处理&#xff0c;而是执行了 {{}} 是多种前端框架&#xff08;如 Vue、Angular、Django 模板等&#xff09;中常见的模板插值语…

Ubuntu 多网卡安全路由配置(SSH 不断线版)

Ubuntu 多网卡路由配置笔记&#xff08;内网 外网同时通&#xff09;&#xff08;SSH断线版&#xff09;文章浏览阅读386次&#xff0c;点赞4次&#xff0c;收藏5次。本文介绍了Ubuntu 如何配置双网卡设备的路由规则&#xff0c;使默认流量走外网&#xff08;192.168.2.0/24&a…

基于昇腾NPU部署llamafactory单机多卡微调Qwen3教程

1. 进入华为云 华为云首页 点击右上角控制台 2.进入ModelArts 点击搜索框->搜索“ModelArts”->选择AI开发平台ModelArts->进入平台后点击开发者空间 3.创建Notebook 3.1在开发者空间中点击Notebook->在西南贵阳一下点击创建Notebook 3.2进入创建Notebook页…

关于XES文件格式诸多问题

1. 格式类型是什么&#xff1f; case:concept:name (案例ID) - 必须是字符串类型concept:name (活动名称) - 字符串类型time:timestamp - 必须是datetime类型 2. 如何修改&#xff1f; data[case:concept:name] data[case:concept:name].astype(str)data[concept:name] data…

数据融合平台有哪些?在数据治理中发挥什么作用?

目录 一、常见的数据融合平台 &#xff08;一&#xff09;传统数据融合平台 &#xff08;二&#xff09;实时数据融合平台 &#xff08;三&#xff09;云数据融合平台 二、数据融合平台在数据治理中的作用 &#xff08;一&#xff09;提升数据质量 &#xff08;二&#…

​​Linux:XFS 文件系统扩容完整指南

​​​问题背景​​ 在扩展 Linux 根目录 / 时,我遇到了一个错误: sudo resize2fs /dev/uos/root resize2fs: 超级块中的幻数有错 尝试打开 /dev/uos/root 时找不到有效的文件系统超级块。 经过排查,发现根本原因是 ​​文件系统类型是 XFS​​,而 resize2fs 仅适用于 e…

网络安全之CTF专题赛RE题解

easyre hap文件改成zip格式然后解压去反编译abc文件即可拿到源码 这里推荐一个网站.abcD 蛮好用的 下载反编译结果&#xff0c;解压后用vscode打开分析。 这里可以看到一些目录结构&#xff0c;我们先看看flag目录 x_2_2.count位1000000的时候就会输出flag那么大概率是一个点…

a padding to disable MSIE and Chrome friendly error page

问题 a padding to disable MSIE and Chrome friendly error page 解决 nginx 代理地址 配错了

71、C# Parallel.ForEach 详解

Parallel.ForEach 是 .NET Framework 4.0 引入的并行编程功能的一部分&#xff0c;位于 System.Threading.Tasks 命名空间中。它允许你对集合中的元素进行并行处理&#xff0c;可以显著提高处理大量数据时的性能。 基本用法 using System; using System.Collections.Generic;…

生产者-消费者模式在不同操作系统上的行为差异

在多线程编程中&#xff0c;生产者-消费者模式是一种常见的设计模式&#xff0c;用于解决线程间的数据同步问题。最近&#xff0c;我在 Linux 和 macOS 上运行同一个生产者-消费者模式的程序时&#xff0c;发现它们表现出不同的行为。本文将介绍这个现象、分析其原因&#xff0…