深入理解Python中的Pandas库

目录

  1. Pandas简介
  2. 安装Pandas
  3. Pandas的核心数据结构
    • Series
    • DataFrame
  4. 数据加载与存储
    • 从CSV文件读取数据
    • 从Excel文件读取数据
    • 从SQL数据库读取数据
    • 数据存储
  5. 数据操作
    • 数据选择
    • 数据过滤
    • 数据排序
    • 数据分组与聚合
    • 数据透视表
  6. 数据清洗与处理
    • 处理缺失值
    • 数据转换
    • 数据合并
  7. 数据可视化
  8. 实战案例
  9. 总结

Pandas简介

Pandas是基于NumPy构建的,主要用于数据处理和分析的开源库。它提供了高效、便捷的数据结构和分析工具,尤其适用于处理结构化数据。Pandas的名字来源于“Panel Data”和“Python Data Analysis Library”。

安装Pandas

在开始使用Pandas之前,需要先安装它。可以使用pip或conda进行安装:

pip install pandas

或者使用conda:

conda install pandas

Pandas的核心数据结构

Pandas有两个核心数据结构:Series和DataFrame。

Series

Series是一种类似于一维数组的对象,由一组数据(各种NumPy数据类型)和与之相关的数据标签(即索引)组成。以下是创建Series的例子:

import pandas as pd# 创建一个简单的Series
s = pd.Series([1, 2, 3, 4, 5])
print(s)# 指定索引的Series
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
print(s)

DataFrame

DataFrame是一个二维的、带有标签的数据结构,可以看作是Series的容器。它可以存储不同数据类型的列,是Pandas中最常用的数据结构。以下是创建DataFrame的例子:

import pandas as pd# 创建一个简单的DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie'],'age': [25, 30, 35],'city': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)# 从CSV文件读取DataFrame
df = pd.read_csv('data.csv')
print(df)

数据加载与存储

Pandas支持从多种数据源加载数据,如CSV文件、Excel文件、SQL数据库等,同时也支持将数据存储到这些格式中。

从CSV文件读取数据

import pandas as pd# 从CSV文件读取数据
df = pd.read_csv('data.csv')
print(df)

从Excel文件读取数据

import pandas as pd# 从Excel文件读取数据
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df)

从SQL数据库读取数据

import pandas as pd
import sqlite3# 创建数据库连接
conn = sqlite3.connect('database.db')# 从SQL查询结果读取数据
df = pd.read_sql_query('SELECT * FROM table_name', conn)
print(df)

数据存储

将DataFrame存储到不同格式的文件中:

import pandas as pd# 存储到CSV文件
df.to_csv('output.csv', index=False)# 存储到Excel文件
df.to_excel('output.xlsx', index=False)# 存储到SQL数据库
import sqlite3
conn = sqlite3.connect('database.db')
df.to_sql('table_name', conn, if_exists='replace', index=False)

数据操作

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

数据选择

可以通过标签或位置选择数据:

import pandas as pddata = {'name': ['Alice', 'Bob', 'Charlie'],'age': [25, 30, 35],'city': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)# 选择单列数据
print(df['name'])# 选择多列数据
print(df[['name', 'age']])# 选择单行数据
print(df.iloc[0])# 选择多行数据
print(df.iloc[1:3])

数据过滤

可以根据条件过滤数据:

import pandas as pddata = {'name': ['Alice', 'Bob', 'Charlie'],'age': [25, 30, 35],'city': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)# 筛选年龄大于30的数据
filtered_df = df[df['age'] > 30]
print(filtered_df)

数据排序

可以对数据进行排序:

import pandas as pddata = {'name': ['Alice', 'Bob', 'Charlie'],'age': [25, 30, 35],'city': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)# 按年龄排序
sorted_df = df.sort_values(by='age')
print(sorted_df)

数据分组与聚合

Pandas提供了强大的分组与聚合功能:

import pandas as pddata = {'name': ['Alice', 'Bob', 'Charlie', 'David'],'age': [25, 30, 35, 40],'city': ['New York', 'Los Angeles', 'Chicago', 'New York']
}
df = pd.DataFrame(data)# 按城市分组并计算平均年龄
grouped_df = df.groupby('city').mean()
print(grouped_df)

数据透视表

透视表是数据聚合的一种强大工具:

import pandas as pddata = {'name': ['Alice', 'Bob', 'Charlie', 'David'],'age': [25, 30, 35, 40],'city': ['New York', 'Los Angeles', 'Chicago', 'New York'],'sales': [200, 300, 400, 500]
}
df = pd.DataFrame(data)# 创建透视表
pivot_table = df.pivot_table(values='sales', index='city', aggfunc='sum')
print(pivot_table)

数据清洗与处理

在实际应用中,数据往往是杂乱和不完整的,需要进行清洗和处理。

处理缺失值

Pandas提供了多种处理缺失值的方法:

import pandas as pddata = {'name': ['Alice', 'Bob', None, 'David'],'age': [25, None, 35, 40],'city': ['New York', 'Los Angeles', 'Chicago', None]
}
df = pd.DataFrame(data)# 检查缺失值
print(df.isnull())# 删除缺失值
cleaned_df = df.dropna()
print(cleaned_df)# 填充缺失值
filled_df = df.fillna({'name': 'Unknown', 'age': 0, 'city': 'Unknown'})
print(filled_df)

数据转换

可以对数据进行转换和处理:

import pandas as pddata = {'name': ['Alice', 'Bob', 'Charlie', 'David'],'age': [25, 30, 35, 40],'city': ['New York', 'Los Angeles', 'Chicago', 'New York']
}
df = pd.DataFrame(data)# 添加新列
df['age_group'] = df['age'].apply(lambda x: 'Young' if x < 30 else 'Old')
print(df)# 替换值
df['city'] = df['city'].replace('New York', 'NY')
print(df)

数据合并

可以将多个数据集合并为一个:

import pandas as pddata1 = {'name': ['Alice', 'Bob'],'age': [25, 30]
}
data2 = {'name': ['Charlie','David'],'age': [35, 40]
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)# 合并数据
merged_df = pd.concat([df1, df2])
print(merged_df)# 基于列合并
data3 = {'name': ['Alice', 'Bob'],'city': ['New York', 'Los Angeles']
}
df3 = pd.DataFrame(data3)
merged_df = pd.merge(df1, df3, on='name')
print(merged_df)

数据可视化

Pandas与Matplotlib和Seaborn等可视化库集成良好,可以方便地进行数据可视化:

import pandas as pd
import matplotlib.pyplot as pltdata = {'name': ['Alice', 'Bob', 'Charlie', 'David'],'age': [25, 30, 35, 40],'sales': [200, 300, 400, 500]
}
df = pd.DataFrame(data)# 绘制柱状图
df.plot(kind='bar', x='name', y='sales')
plt.show()# 绘制折线图
df.plot(kind='line', x='name', y='age')
plt.show()

实战案例

为了更好地理解Pandas的强大功能,我们通过一个实际案例来展示如何使用Pandas进行数据分析。假设我们有一个包含销售数据的CSV文件,文件内容如下:

date,product,quantity,price
2023-01-01,apple,10,0.5
2023-01-01,banana,5,0.3
2023-01-02,apple,8,0.5
2023-01-02,banana,7,0.3

我们将使用Pandas对这些数据进行分析。

加载数据

import pandas as pd# 从CSV文件读取数据
df = pd.read_csv('sales.csv')
print(df)

数据预处理

# 转换日期列为日期类型
df['date'] = pd.to_datetime(df['date'])# 计算总销售额
df['total_sales'] = df['quantity'] * df['price']
print(df)

数据分析

# 按日期聚合销售数据
daily_sales = df.groupby('date').sum()
print(daily_sales)# 按产品聚合销售数据
product_sales = df.groupby('product').sum()
print(product_sales)

数据可视化

import matplotlib.pyplot as plt# 绘制每日销售额
daily_sales['total_sales'].plot(kind='line')
plt.title('Daily Sales')
plt.xlabel('Date')
plt.ylabel('Total Sales')
plt.show()# 绘制产品销售额
product_sales['total_sales'].plot(kind='bar')
plt.title('Product Sales')
plt.xlabel('Product')
plt.ylabel('Total Sales')
plt.show()

总结

Pandas是一个强大且灵活的数据分析库,适用于处理和分析各种结构化数据。通过本篇博客,我们介绍了Pandas的核心数据结构和功能,并通过实际案例展示了如何使用Pandas进行数据分析。希望这篇文章能够帮助你更好地理解和掌握Pandas,提高数据处理和分析的效率。如果你有任何疑问或需要进一步的帮助,欢迎随时联系我。

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

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

相关文章

KingBase 下的 sys_hba.conf 详解

客户端访问KingbaseES数据库,需要建立身份的认证,sys_hba.conf相当于认证的黑白名单,可以通过配置sys_hba.conf允许或拒绝客户端对数据库服务器的访问。 sys_hba.conf原理: 客户端认证是由一个配置文件(通常名为sys_hba.conf并被存放在数据库集簇目录中)控制(HBA表示基…

《昇思25天学习打卡营第25天|第27天》

今天是学习的第二十七天&#xff0c;今天学习的是应用实践篇中计算机视觉中ShuffleNet图像分类。 从对ShuffleNet网络介绍开始学习&#xff0c;模型架构&#xff08;Pointwise Group Convolution&#xff0c;Channel Shuffle&#xff0c;ShuffleNet模块&#xff0c;构建Shuffl…

knowLedge-工具函数返回kb数值转换为KB,MB,GB等单位保留两位小数

1.场景 实现一个工具函数&#xff0c;将后端返回的单位为KB&#xff08;但实际上是kb&#xff0c;即千字节&#xff0c;注意大小写通常表示不同&#xff0c;这里我们按照常见需求处理为KB&#xff09;的数字转换成KB、MB、GB等形式&#xff0c;你可以按照以下步骤进行。这个函数…

【Mybatis整合Oracle】在 xml 文件中 WITH 子句的简单使用

在 Oracle SQL 中&#xff0c;WITH 子句用于定义一个或多个公共表表达式&#xff08;CTE, Common Table Expression&#xff09;&#xff0c;然后可以在主查询中引用这些表达式。WITH 子句通常用于简化复杂查询的结构&#xff0c;增强可读性&#xff0c;并避免重复编写相同的子…

# Redis 入门到精通(九)-- 主从复制(1)

Redis 入门到精通&#xff08;九&#xff09;-- 主从复制&#xff08;1&#xff09; 一、redis 主从复制 – 主从复制简介 1、互联网“三高”架构 高并发高性能高可用 2、你的“Redis”是否高可用&#xff1f; 1&#xff09;单机 redis 的风险与问题 问题1.机器故障  现…

C++ 鼠标轨迹API【神诺科技SDK】

一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型&#xff0c;如直线或曲线路径。然而&#xff0c;这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现&#xff0c;使得神诺科技 能够通过深度学习技术&#xff0c;学习并模拟更自然的鼠标移动行为。 二.…

java之对称字符串以及如何优化(链式编程)

import java.util.Scanner;public class ScannerDemo12 {public static void main(String[] args) {Scanner sc new Scanner(System.in);System.out.println("请输入一个字符串");String str sc.next();//链式编程StringBuilder sbnew StringBuilder();sb.append(s…

国内大陆地区huggingface连接不上的解决方案

简介 本文主要介绍国内大陆地区huggingface连接不上的解决方案,希望能对学习大模型的同学们有所帮助。 1. 背景 最近有不少同学反应无法正常下载huggingface的模型文件,亲自尝试使用git clone下载huggingface上的大模型文件时,也同样无法正常下载,以Meta-Llama-3-8B为例…

全国区块链职业技能大赛第九套区块链产品需求分析与方案设计

任务1-1:区块链产品需求分析与方案设计 房屋租赁平台中涉及到租客、房东、区块链租房平台、房屋等参与方,他们需要在区块链租房平台中完成账户注册、身份上链、出租房屋、生成合同等多种业务活动。通过对业务活动的功能分析,可以更好的服务系统的开发流程。基于房屋租赁平台…

数据结构之判断完全二叉树详解与示例(C,C++)

文章目录 一、判断完全二叉树的思路二、C语言实现三、C语言实现四、总结 完全二叉树是一种特殊的二叉树&#xff0c;它满足以下两个条件&#xff1a; 每一层&#xff08;除了最后一层&#xff09;都被严格地填充了节点。 最后一层的节点都尽可能地靠左对齐。 本文将详细介绍如…

undefined reference to rpl_malloc

编译 psmisc 时遇到这个错误&#xff0c;搜索了一下 rpl_malloc&#xff0c; grep -irwn rpl_malloc config.status:877:D["malloc"]" rpl_malloc" Binary file src/killall.o matches autom4te.cache/traces.1:979:m4trace:configure.ac:205: -1- AH_OUT…

微服务(网关路由)

目录 一&#xff1a;网关路由 1&#xff1a;认识网关 2&#xff1a;快速入门 2.1&#xff1a;创建项目 2.2&#xff1a;引入依赖 2.3&#xff1a;启动类 2.4&#xff1a;路由配置 2.5&#xff1a;测试 3&#xff1a;路由过滤 二&#xff1a;网关登录校验 1&…

58、主从复制数据库+读写分离

mysql的主从复制和读写分离&#xff08;面试问原理&#xff09; mysql的主从复制和读写分离&#xff1a; 主从复制 面试必问 主从复制的原理。 读写分离&#xff0c;MHA 一、主从复制 1.1、主从复制的模式&#xff1a; 1、mysql的默认模式&#xff1a; 异步模式&#xf…

RocketMQ集群搭建,看完这篇文章你就懂了(基于2m-2s-async模式)

前言 上一篇初步认识了RocketMQ&#xff0c;这一篇文章我们简单来搭建一个RocketMQ集群。RocketMQ支持多种集群部署模式&#xff0c;其中最常用的是多主多从的异步复制模式&#xff08;2m代表两个master&#xff0c;2s代表两个slave&#xff0c;async代表异步刷盘的机制&#…

java将网址生成二维码图片base64

1、pom中引入组件 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version> </dependency> 2、代码实现 // 生成二维码public String jumpToQRcodeGen(String url) {int wi…

乐鑫ESP32-H2设备联网芯片,集成多种安全功能方案,启明云端乐鑫代理商

在数字化浪潮的推动下&#xff0c;物联网正以前所未有的速度融入我们的日常生活。然而&#xff0c;随着设备的激增&#xff0c;安全问题也日益成为公众关注的焦点。 乐鑫ESP32-H2致力于为所有开发者提供高性价比的安全解决方案&#xff0c;这款芯片经过专门设计以集成多种安全…

[Armbian] 部署Docker版Home Assistent,安装HACS并连接米家设备

title: [Armbian] 部署Docker版Home Assistent&#xff0c;安装HACS并连接米家设备 date: 2024-07-21T10:51:23Z lastmod: 2024-07-21T11:40:39Z [Armbian] 部署Docker版Home Assistent&#xff0c;安装HACS并连接米家设备 官网&#xff1a;Home Assistant (home-assistant.i…

git -.gitignore不生效的问题

目录 1&#xff0c;问题场景2&#xff0c;原因3&#xff0c;解决单个文件文件夹 1&#xff0c;问题场景 1&#xff0c;当执行 git add . 命令后&#xff0c;才想起来部分文件需要被忽略不上传&#xff0c;这时加到 .gitignore 中发现不生效&#xff0c;之后的 git commit 依旧…

FoundationDB 基本使用

目录 一、FoundationDB介绍 二、安装单机版FoundationDB 2.1 下载安装程序 2.2 安装FoundationDB 2.3 修改配置信息 2.4 管理FoundationDB服务 三、fdbcli的常用命令 3.1连接数据库 3.2退出fdbcli 3.3查看版本 3.4 写模式 3.5写入键值 3.6读取键值 3.7删除键值 …

Unity3D中Instance创建实例问题详解

前言 在Unity3D开发中&#xff0c;对象的创建和管理是一个基础且重要的环节。Instance&#xff08;实例&#xff09;和Singleton&#xff08;单例&#xff09;是两种常见的对象创建方式&#xff0c;它们在Unity3D中有不同的应用场景和实现方法。本文将详细解析Unity3D中如何通…