Python中的Pandas数据处理与分析

Pandas 是 Python 生态系统中用于数据处理与分析的核心库之一。它提供了高效且便捷的数据结构,能够处理各类数据操作,如数据清洗、转换、分析等。本文将深入探讨 Pandas 的基本功能和高级特性,涵盖数据导入与导出、数据预处理、数据操作、数据分析和可视化等内容。

一、Pandas 数据结构

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

1. Series

Series 是一种类似于一维数组的对象,它由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。

 

import pandas as pd # 创建一个简单的 Series data = pd.Series([1, 2, 3, 4, 5]) print(data)

2. DataFrame

DataFrame 是一个表格型的数据结构,它包含有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。

 

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

二、数据导入与导出

Pandas 支持从多种文件格式导入和导出数据,如 CSV、Excel、SQL、JSON 等。

1. CSV 文件
导入 CSV 文件

df = pd.read_csv('data.csv')

导出 CSV 文件
 

df.to_csv('output.csv', index=False)

2. Excel 文件
导入 Excel 文件
 

df = pd.read_excel('data.xlsx')

导出 Excel 文件
 

df.to_excel('output.xlsx', index=False)

3. JSON 文件
导入 JSON 文件
 

df = pd.read_json('data.json')

导出 JSON 文件

df.to_json('output.json')

三、数据预处理

数据预处理是数据分析的重要步骤之一,包括数据清洗、缺失值处理、重复值处理等。

1. 数据清洗
删除空值

df.dropna(inplace=True)

填充空值

df.fillna(value=0, inplace=True)

2. 处理重复值
检测重复值

duplicates = df.duplicated() print(duplicates)

删除重复值

df.drop_duplicates(inplace=True)

3. 数据转换
更改数据类型

df['Age'] = df['Age'].astype(int)

应用函数转换数据

df['Age'] = df['Age'].apply(lambda x: x + 1)

四、数据操作

Pandas 提供了丰富的数据操作功能,包括数据选取、过滤、合并、分组等。

1. 数据选取
选取列

names = df['Name']

选取行

first_row = df.iloc[0]

条件选取

adults = df[df['Age'] > 18]

2. 数据过滤

filtered_df = df[df['City'] == 'New York']

3. 数据合并
合并两个 DataFrame
 

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2']}) df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 'C': ['C0', 'C1', 'C2']}) merged_df = pd.merge(df1, df2, on='A')

数据拼接

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'], 'B': ['B0', 'B1', 'B2']}) df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'], 'B': ['B3', 'B4', 'B5']}) concat_df = pd.concat([df1, df2])

4. 数据分组
分组计算

grouped = df.groupby('City').mean()

分组应用自定义函数

grouped = df.groupby('City').apply(lambda x: x.sum())

五、数据分析

Pandas 提供了多种数据分析方法,可以对数据进行描述性统计分析、相关性分析等。

1. 描述性统计分析

description = df.describe()

2. 相关性分析

correlation = df.corr()

六、数据可视化

虽然 Pandas 本身支持基本的绘图功能,但通常会与 Matplotlib 和 Seaborn 等库结合使用,进行更复杂的可视化操作。

1. 基本绘图

df.plot(kind='bar')

2. 与 Matplotlib 结合
 

import matplotlib.pyplot as plt df.plot(kind='line') plt.show()

3. 与 Seaborn 结合
 

import seaborn as sns sns.barplot(x='City', y='Age', data=df) plt.show()

七、实战案例:泰坦尼克号数据分析

下面,我们通过一个实战案例,展示 Pandas 在数据分析中的应用。数据集使用经典的泰坦尼克号乘客数据集。

 

import pandas as pd # 读取数据 df = pd.read_csv('titanic.csv') # 查看数据基本信息 print(df.info()) # 数据预处理 df.drop(['Cabin'], axis=1, inplace=True) # 删除 Cabin 列 df.fillna({'Age': df['Age'].median(), 'Embarked': df['Embarked'].mode()[0]}, inplace=True) # 填充缺失值 # 数据分析 survived = df['Survived'].value_counts() print(survived) # 性别对比 sex_survived = df.groupby('Sex')['Survived'].mean() print(sex_survived) # 年龄分布 df['Age'].hist() plt.xlabel('Age') plt.ylabel('Count') plt.title('Age Distribution') plt.show() # 与 Seaborn 结合分析 sns.barplot(x='Sex', y='Survived', data=df) plt.title('Survival Rate by Sex') plt.show() # 按 Pclass 分组 pclass_survived = df.groupby('Pclass')['Survived'].mean() print(pclass_survived) sns.barplot(x='Pclass', y='Survived', data=df) plt.title('Survival Rate by Pclass') plt.show()

结论

通过以上内容,可以看出 Pandas 是一个功能强大的数据处理和分析库,它简化了数据操作的复杂性,提高了数据分析的效率。掌握 Pandas 的基本和高级功能,对于数据科学家和分析师来说,是一项必备技能。希望本文能够帮助你更好地理解和应用 Pandas 进行数据分析。

参考文献

  1. Pandas 官方文档
  2. Matplotlib 官方文档
  3. Seaborn 官方文档

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

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

相关文章

C语言学习日记————结构体

结构体是一种数据类型-----构造类型 struct 结构体名 { 成员列表 }; 1、struct //结构体 类型 关键字 2、结构体名 //表明这个结构体类型的名称 3、成员列表 …

Lua 基础 04 模块

Lua 基础相关知识 第四期 require 模块,通常是一个表,表里存储了一些字段和函数,单独写在一个 lua 文件。 例如,这是一个 tools.lua 文件,定义了一个局部 tools 表,包含一个 log 函数,可以传…

用容器构建wordpress项目

用容器构建wordpress项目 #准备两个镜像 #数据库和centos docker pull mysql:5.7 docker pull centos:7 #创建一个wordpress文件夹,在wordpress文件里面写一个Dockerfile文件 vim DockerfileFROM centos:7 #基于centos环境RUN yum -y install epel-release ;\ #安装…

笔记93:关于 C++ 中的 Eigen 库

注意1&#xff1a;Eigen 是一个基于 C 模板的线性代数库&#xff0c;以支持在 C 中进行矩阵运算&#xff1b; 注意2&#xff1a;要在 C 中使用 Eigen&#xff0c;需要在在程序开始前要包含所需头文件路径&#xff1b; #include <Eigen> a a 基础用法汇总 定义向量 E…

Shell编程实际应用

一、脚本编程步骤 1. 需求分析 2. 命令测试 3. 脚本编程 4. 测试调优 二、案例分析 1.MAC记录与端口扫描 实验要求&#xff1a; &#xff08;1&#xff09;统计网络中服务器MAC。 &#xff08;2&#xff09;检查哪些主机开启FTP。&#xff08;21&#xff09;&#xff08;wg…

vue3状态管理,pinia的使用

​​​​​​​状态管理 我们知道组件与组件之间可以传递信息&#xff0c;那么我们就可以将一个信息作为组件的独立状态&#xff08;例如&#xff0c;单个组件的颜色&#xff09;或者共有状态&#xff08;例如&#xff0c;多个组件是否显示&#xff09;在组件之传递&#xff0c…

顺序表的讲解与实现

顺序表的讲解与实现 一、顺序表的概念及结构二、顺序表分类顺序表和数组的区别顺序表分类静态顺序表动态顺序表 三、动态顺序表的实现(使用VS2022)1.初始化、销毁、打印内容2.检查扩容3.尾部插入、尾部删除、头部插入、头部删除尾部插入尾部删除头部插入头部删除 4.指定插入、指…

C++ stack类与queue类

目录 0.前言 1.容器适配器 1.1容器适配器的特点 1.2容器适配器的实现 1.3使用容器适配器的场景 2.stack的介绍与使用 2.1介绍 2.2使用 3.queue的介绍与使用 3.1介绍 3.2使用 4.stack和queue的模拟实现 4.1 stack的模拟实现 4.2 queue的模拟实现 5.结语 &#xf…

博客星球大冒险:用Spring Boot和JWT打造你的数字王国

揭秘如何在Spring Boot中无缝集成JWT&#xff0c;为你的应用打造一个高度可扩展且安全的认证系统。从添加依赖到创建JWT过滤器&#xff0c;再到实现令牌的有效性管理和刷新机制&#xff0c;每一步都精心设计&#xff0c;确保你的乐园能够迎接成千上万的游客&#xff01; 文章目…

Spark_SparkOnHive_海豚调度跑任务写入Hive表失败解决

背景 前段时间我在海豚上打包程序写hive出现了一个问题&#xff0c;spark程序向hive写数据时&#xff0c;报了如下bug&#xff0c; org.apache.spark.sql.AnalysisException: The format of the existing table test.xx is HiveFileFormat It doesnt match the specified for…

全球七家半导体工厂建设受阻:英特尔、三星、台积电等面临延期挑战

过去两年间&#xff0c;半导体行业经历了市场衰退、复苏慢于预期以及资金紧缩等问题&#xff0c;英特尔、台积电和三星等主要企业虽然继续推进扩张计划&#xff0c;但不断调整和放缓工厂建设的步伐与时间表&#xff0c;以更好地服务于长期发展目标。据统计&#xff0c;全球范围…

LLM主流开源代表模型

LLM主流开源大模型介绍 1 LLM主流大模型类别 随着ChatGPT迅速火爆&#xff0c;引发了大模型的时代变革&#xff0c;国内外各大公司也快速跟进生成式AI市场&#xff0c;近百款大模型发布及应用。 目前&#xff0c;市面上已经开源了各种类型的大语言模型&#xff0c;本章节我们…

【MATLAB源码-第220期】基于matlab的Massive-MIMO误码率随着接收天线变化仿真采用ZF均衡和QPSK调制。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 系统背景与目标 无线通信系统的发展极大地推动了现代通信技术的进步&#xff0c;从移动通信到无线局域网&#xff0c;甚至是物联网&#xff0c;均依赖于无线通信系统的高效和可靠性。在无线通信系统中&#xff0c;核心目…

【kafka】关于Kafka的入门介绍

为什么要使用kafka&#xff1f;kafka是什么东西&#xff1f; 案例场景 A服务向B服务发送消息&#xff0c;A服务传输数据很快&#xff0c;B服务处理数据很慢&#xff0c;这样B服务就会承受不住&#xff0c;怎么办&#xff1f;通过添加消息队列作为缓冲。kafka就是消息队列中的…

初识C++ · 模拟实现stack和Queue

目录 前言&#xff1a; 1 Stack 1.1 双端队列 2 Queue 前言&#xff1a; 经历了list三个自定义类型的洗礼&#xff0c;来个简单的放松放松&#xff0c;即栈和队列&#xff1a; 文档记录的&#xff0c;栈和队列是一种容器适配器&#xff0c;它们不属于stl&#xff0c;但是它…

进程间并发通信-IO多路复用

1 select 1.1 源码示例 /*************************************************************************> File Name: write.c> Author: yas> Mail: rage_yashotmail.com> Created Time: 2024年06月02日 星期日 14时50分23秒************************************…

低空经济发展报告

低空经济是指利用低空空间进行商业开发和经济活动的概念。随着航空技术的发展和无人机的普及&#xff0c;低空经济逐渐成为一个新兴的经济领域。 低空经济可以涵盖的领域非常广泛&#xff0c;包括但不限于物流配送、农业植保、城市交通、旅游观光等。利用无人机等飞行器进行物…

嵌入式学习——网络编程(TCP)——day31

1. TCP和UDP的区别 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09; UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09; 1.1 连接方式 TCP 是面向连接的协议&#xff0c;它在数据传输前需要通过三次握手建立…

【算法】一文搞懂归并排序

概念 归并排序利用了分治思想&#xff0c;将待排序的数组范围层层划分&#xff0c;每次划分会得到两个大小相近的区间。当无法划分时&#xff0c;递归结束&#xff0c;自下而上进行区间合并merge操作&#xff0c;合并操作依次比较两个区间的元素&#xff0c;进而使合并后的区间…

【西瓜书】5.神经网络

1.概念 有监督学习正向传播&#xff1a;输入样本---输入层---各隐层---输出层反向传播&#xff1a;误差以某种形式在通过隐层向输入层逐层反转&#xff0c;并将误差分摊给各层的所有单元&#xff0c;以用于修正各层的权值激活函数&#xff1a;也叫阶跃函数&#xff0c;目的是引…