Python数学建模-2.5Pandas库介绍

2.5.1Pandas基本操作

Pandas是一个强大的Python数据分析库,它提供了快速、灵活且富有表现力的数据结构,设计初衷是为了处理关系型或标记型数据。Pandas的基本操作涵盖了数据的读取、处理、筛选、排序、分组、合并以及可视化等多个方面。

以下是一些Pandas的基本操作示例:

1.数据读取

Pandas可以方便地读取各种格式的数据文件,如CSV、Excel、SQL数据库等。

import pandas as pd  # 读取CSV文件  
df = pd.read_csv('data.csv')  # 读取Excel文件  
df = pd.read_excel('data.xlsx')

2.数据处理

Pandas提供了丰富的数据处理功能,如缺失值处理、数据类型转换等。

# 处理缺失值,用0填充  
df.fillna(0, inplace=True)  # 转换数据类型  
df['column_name'] = df['column_name'].astype(int)

3.数据筛选

使用布尔索引或条件表达式来筛选数据。

# 筛选某列值大于10的行  
filtered_df = df[df['column_name'] > 10]

4.数据排序

对数据的行或列进行排序。

# 按某列升序排序  
sorted_df = df.sort_values(by='column_name', ascending=True)

5.数据分组

使用groupby方法对数据进行分组,并进行聚合操作。

# 按某列分组并计算每组的平均值  
grouped_df = df.groupby('column_name').mean()

6.数据合并

使用merge或concat方法合并多个DataFrame。

# 合并两个DataFrame  
merged_df = pd.merge(df1, df2, on='key_column')

7.数据可视化

虽然Pandas本身不直接提供数据可视化功能,但它可以与Matplotlib、Seaborn等库结合使用,实现数据的可视化展示。

操作举例:

例1:生成二维数组:

生成服从标准正态分布的24*4随机数矩阵,并保存为DateFrame数据结构。


import pandas as pd
import numpy as np
dates=pd.date_range(start='20191101',end='20191124',freq='D')
a1=pd.DataFrame(np.random.randn(24,4), index=dates, columns=list('ABCD'))
a2=pd.DataFrame(np.random.rand(24,4))

详解:

在这段代码中,你使用了pandasnumpy库来创建两个DataFrame对象。我将逐步解释每一行代码的含义:

  1. import pandas as pd

    • 这行代码导入了pandas库,并给它一个简短的别名pdpandas是一个强大的数据分析库,提供了快速、灵活且富有表现力的数据结构,如Series和DataFrame。
  2. import numpy as np

    • 这行代码导入了numpy库,并给它一个简短的别名npnumpy是Python的一个基础数值计算库,提供了多维数组对象、各种派生对象(如掩码数组和矩阵)以及用于数组快速操作的各种API。
  3. dates=pd.date_range(start='20191101',end='20191124',freq='D')

    • 这行代码使用pandasdate_range函数创建了一个日期范围。这个范围从20191101(2019年11月1日)开始,到20191124(2019年11月24日)结束,并且freq='D'表示每天生成一个日期。生成的日期范围被赋值给变量dates
  4. a1=pd.DataFrame(np.random.randn(24,4), index=dates, columns=list('ABCD'))

    • 这行代码创建了一个名为a1的DataFrame。
    • np.random.randn(24,4)生成一个形状为24行4列的数组,数组中的元素是从标准正态分布(均值为0,标准差为1)中随机抽取的。
    • index=dates将前面生成的日期范围dates设置为DataFrame的索引。
    • columns=list('ABCD')将DataFrame的列名设置为'A', 'B', 'C', 'D'。
  5. a2=pd.DataFrame(np.random.rand(24,4))

    • 这行代码创建了一个名为a2的DataFrame。
    • np.random.rand(24,4)生成一个形状为24行4列的数组,数组中的元素是从[0, 1)区间内均匀分布的随机数中随机抽取的。
    • 默认情况下,DataFrame的索引是整数,从0开始递增,列名则是默认的整数列名(如0, 1, 2, 3)。

所以,你最终得到了两个DataFrame:a1有一个日期范围的索引和'A', 'B', 'C', 'D'的列名,其数据是从标准正态分布中随机抽取的;而a2有一个默认的整数索引和默认的整数列名,其数据是从[0, 1)区间内均匀分布的随机数中随机抽取的。

例2:读写文件:

数据写入文件示例

import pandas as pd
import numpy as np
dates=pd.date_range(start='20191101', end='20191124', freq='D')
a1=pd.DataFrame(np.random.randn(24,4), index=dates, columns=list('ABCD'))
a2=pd.DataFrame(np.random.randn(24,4))
a1.to_excel('data2_38_1.xlsx')
a2.to_csv('data2_38_2.csv')
f=pd.ExcelWriter('data2_38_3.xlsx')  #创建文件对象
a1.to_excel(f,"Sheet1")  #把a1写入Excel文件
a2.to_excel(f,"Sheet2")  #把a2写入另一个表单中
f.save()

结果输出:sheet1 

ABCD
2019-11-01 00:00:00-2.748299329-0.4751045920.4722281590.375505189
2019-11-02 00:00:000.3941350550.454457381.051139291-0.660948394
2019-11-03 00:00:00-0.1159173660.887737643-0.0652187750.628542098
2019-11-04 00:00:00-0.7470425971.3185878620.3513751962.006559399
2019-11-05 00:00:00-0.538853276-0.3239680351.6412018310.832038225
2019-11-06 00:00:00-0.2308198830.3612264762.981059284-0.282752734
2019-11-07 00:00:000.4460128470.1571348530.469619956-0.864433374
2019-11-08 00:00:001.483407425-0.8736135831.2758819131.393361881
2019-11-09 00:00:00-2.993810574-1.8943497150.2462253390.81601978
2019-11-10 00:00:001.001127464-1.283670894-0.277494697-1.108403165
2019-11-11 00:00:000.032262937-0.414623151.3634841821.084065374
2019-11-12 00:00:000.773718361-1.891746884-2.191906796-0.229845183
2019-11-13 00:00:000.7180594850.056195426-0.166176378-0.879896707
2019-11-14 00:00:00-0.77786206-0.5781329460.002456531-1.009984112
2019-11-15 00:00:00-0.140706394-1.6723038832.379240797-0.477193
2019-11-16 00:00:00-0.3304388321.349326828-1.611185835-1.117472688
2019-11-17 00:00:000.594385821-0.3495660632.5156284711.883487368
2019-11-18 00:00:000.4586359530.0914380190.142982058-1.865848673
2019-11-19 00:00:00-0.6277968771.151659164-0.4236115020.385119503
2019-11-20 00:00:00-0.4273550631.11599053-0.405061267-1.614393977
2019-11-21 00:00:00-0.7812244870.9091843160.5200030040.999774923
2019-11-22 00:00:00-2.7074354260.136051358-1.594984208-1.879257378
2019-11-23 00:00:000.0463963670.25656643-0.435255250.506502279
2019-11-24 00:00:000.2083889640.489574841-0.145479331-1.435911666

sheet2:

0123
00.577840647-1.1661758160.4265400660.289906941
1-0.7610932020.5565104332.1576216831.92666881
2-0.8855182781.109919278-0.05744118-1.230625124
3-1.417081241-1.4239432772.9439841980.062130554
40.8714317030.5147092991.834358959-0.006424981
5-0.3189332530.016404238-0.9168175272.545955738
60.172685038-0.240089429-0.812485835-0.929242697
7-0.6323869720.1312354041.628522398-0.47808205
8-0.05836918-0.881596476-0.949172898-0.569644943
93.066127163-0.1513347220.927841517-0.659900701
10-0.072356153-0.507385188-0.410943796-0.960699711
11-0.094601643-1.1657575350.7633953541.235162596
120.9256449691.1591801431.1620820422.050544193
130.282632986-0.690629242-0.135016956-0.87034863
14-0.450855017-0.4959521311.197093461-1.785680312
151.116692824-0.2689307160.968960205-0.036150945
161.60770553-0.629760951.0167956131.436878938
17-0.944857451-1.664227075-1.029120793-0.443128761
18-0.1097412930.7951667930.464880099-1.094235368
19-1.200246108-0.0201481991.1456587-0.760855735
20-0.5537910150.8930021560.043301140.060816106
21-0.959809977-1.296699517-0.500587363-0.778686252
22-0.3543743940.089239771-0.3057371852.222021455
231.7477813940.3180853031.2219008760.724086709

2.5.1数据的一些预处理

  1. 数据合并

    • 堆叠合并:将两个或多个表格在横向(x轴)或纵向(y轴)上进行拼接。这可以通过pandas.concat()函数实现。当表格的索引不完全一致时,可以选择内连接或外连接来决定如何处理索引。
    • 主键合并:基于两个或多个表格的共同列(通常是主键)来合并数据。这通常使用merge()函数完成。
    • 重叠合并:涉及更复杂的数据合并策略,可能需要基于数据的特定逻辑或条件来合并数据。
  2. 数据清洗

    • 处理缺失值:数据集中可能存在缺失值,可以使用fillna()函数将缺失值替换为特定的值(如0、平均值、中位数等)。
    • 删除重复行:如果数据集中存在重复的行,可以使用drop_duplicates()函数来删除它们。
    • 处理异常值:异常值是与数据集中其他值相差较大的值。可以使用clip()函数限制数据的范围,或者使用其他统计方法(如IQR方法)来识别和处理异常值。
  3. 数据标准化

    • 离差标准化:也称为最小-最大标准化,通过将数据值缩放到一个指定的范围(通常是0到1)来消除量纲和数量级的影响。
    • 标准差标准化:也称为Z-score标准化,通过将数据值转换为均值为0、标准差为1的分布来实现标准化。这有助于比较具有不同单位或量级的变量。
    • 小数定标标准化:通过移动数据值的小数点位置来标准化数据。这种方法在某些情况下可能很有用,但不如离差标准化和标准差标准化常用。
  4. 数据转换

    • 数据类型转换:使用astype()函数将数据转换为适当的类型(如整数、浮点数、日期等)。
    • 哑变量处理:对于分类数据,可能需要创建哑变量(或称为指示变量)来进行数值分析。这可以通过get_dummies()函数实现。
    • 离散化连续型数据:有时需要将连续型数据转换为离散型数据,这可以通过cut()函数或自定义逻辑来实现。

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

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

相关文章

【SpringBoot】解决数据库时间和返回时间格式不一致的问题

先看问题: 类中的属性中有Date类型的属性 数据库表中的数据: 可以看到也没问题 但是在返回实体类对象时,数据类型是这样的: 虽然数据是成功返回了,但这显然不是我们想要的结果.也不符合我们的日常使用习惯. 这个问题虽然前端,后端都能处理,但最好还是后端来进行处理.前端主…

22款Visual Studio Code实用插件推荐

前言 Visual Studio Code是一个轻量级但功能强大的源代码编辑器,轻量级指的是下载下来的Visual Studio Code其实就是一个简单的编辑器,强大指的是支持多种语言的环境插件拓展,也正是因为这种支持插件式安装环境开发让Visual Studio Code成为…

【数据结构】深入理解AVL树:实现和应用

AVL树是一种自平衡的二叉搜索树,它能够保持良好的平衡性质,使得在最坏情况下的时间复杂度也能保持在对数级别。本文将深入介绍AVL树的原理、实现和应用,并通过示例代码演示其基本操作。 文章目录 什么是AVL树?AVL树的实现在AVL树…

Vue工程化基础

一Ajax 1.1Ajax概述: 异步与同步 繁琐被淘汰了。 二Axios2 前后端混合开发: 前后端分离开发: YAPI 三前端开发工程化 四Vue脚手架 项目的认识 改变端口号 五Vue开发流程: 六Element组件 6.1快速入门 下载> npm install e…

阿里云数据库优惠价格99元1年起MySQL/SQL Server/PostgreSQL/Redis/MongoDB/MairaDB/ClickHouse

2024年阿里云数据库价格查询,云数据库优惠活动MySQL版2核2GB 50GB配置99元一年,续费不涨价,续费也是99元1年,云数据库MySQL基础系列经济版 2核4GB 100GB配置227元1年,RDS SQL Server云数据库2核4G配置299元1年&#xf…

自学rabbitmq入门到精通

交换机的fault (发布与订阅模式) 因为消息是由生产者发送给excahnge,exchange发送给队列, 然后由队列发送给消费者的。 展示使用图形化界面使用fanout模式。 创建交换机 然后创建三个队列,绑定对应的交换机&#xff…

深度学习pytorch——Broadcast自动扩展

介绍 在 PyTorch 中,Broadcast 是指自动扩展(broadcasting)运算的功能。它允许用户在不同形状的张量之间执行运算,而无需手动将它们的形状改变为相同的大小。当进行运算时,PyTorch 会自动调整张量的形状,使…

C# danbooru Stable Diffusion 提示词反推 Onnx Demo

目录 说明 效果 模型信息 项目 代码 下载 C# danbooru Stable Diffusion 提示词反推 Onnx Demo 说明 模型下载地址:https://huggingface.co/deepghs/ml-danbooru-onnx 效果 模型信息 Model Properties ------------------------- ----------------------…

深度学习 精选笔记(12)卷积神经网络-理论基础2

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Counter)

计数器组件,提供相应的增加或者减少的计数操作。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 接口 Counter() 从API version 9开始,该接口…

SQL的数据定义语言(DDL)语句

文章目录 数据库操作创建新的数据库修改数据库删除数据库 表操作创建数据库表修改数据表删除数据表 索引操作创建索引修改索引 视图操作修改视图 序列操作创建序列修改序列删除序列 分区操作(在支持分区的数据库中)同义词操作(在Oracle等数据…

使用map和set实现简单的词频统计

一、运行效果图 二、代码示例 #include <iostream> #include <fstream> #include <sstream> #include <string> #include <map> #include <set> #include <vector> #include <algorithm> using namespace std;class TextQuer…

LarkXR上新了 | Apollo多终端与XR体验的优化创新

作为领先的数字平行世界产品技术提供方&#xff0c;「Paraverse平行云」一直致力于为企业和开发者提供企业级实时云渲染解决方案。其多终端接入产品LarkXR Apollo&#xff0c;基于底层Runtime技术&#xff0c;实现了在Windows、Linux、MacOS、Android、iOS等多种操作系统下&…

游戏服务端配置“热更”及“秒启动”终极方案(golang/ygluu/卢益贵)

游戏服务端配置“热更”及“秒启动”终极方案 ygluu 卢益贵 关键词&#xff1a;游戏微服务架构、游戏服务端热更、模块化解耦、golang 目录 一、前言 二、异步线程加载/重载方案 三、配置表碎片化方案 四、指针间接引用 五、重载通知 六、示例代码 七、相关连接 一、…

Samtec科普 | 一文了解患者护理应用连接器

【摘要/前言】 通过医疗专业人士为患者提供护理的种种需求&#xff0c;已经不限于手术室与医院的各种安全状况。当今许多患者的护理都是在其他环境进行&#xff0c;例如医生办公室、健康中心&#xff0c;还有越来越普遍的住家。尤其是需要长期看护的患者&#xff0c;所需的科技…

202006A卷青少年软件编程(Scratch)等级考试试卷(三级)

第1题:【 单选题】 执行以下脚本后舞台上的角色将 ?( ) A:先克隆自身,克隆体出现后被删除 B:先克隆自身,克隆体出现后删除本体 C:克隆出自身后本体与克隆体同时被删除 D:克隆出自身后本体与克隆体被不会被删除 【正确答案】: A 【试题解析】 : 第2题:【 单选题】…

MATLAB环境下基于决策树和随机森林的心力衰竭患者生存情况预测

近年来&#xff0c;随着医学数据的不断积累和计算机技术的快速发展&#xff0c;许多机器学习技术已经被用在医学领域&#xff0c;并取得了不错的效果。与传统的基于医学知识经验的心衰预后评估模型相比&#xff0c;机器学习方法可以快速、高效地从繁杂的、海量的心衰病人数据中…

SSH 批量免密登录服务器

思路&#xff1a;创建密钥&#xff0c;并通过分发公钥文件到其他服务器&#xff0c;从而实现批量免密无交互登录服务器 拓扑结构&#xff1a;主服务器 |----》从服务器1 |----》从服务器2 |----》..... 参考链接&#xff1a;SSH命令批量操作服务器_ssh批量登录远程执行脚本…

【Liunx-后端开发软件安装】Liunx安装nginx

【Liunx-后端开发软件安装】Liunx安装nginx 使用安装包安装 一、简介 nginx&#xff0c;这个家伙可不是你厨房里的那位大厨&#xff0c;它可是互联网世界的“煎饼果子摊主”。想象一下&#xff0c;在熙熙攘攘的网络大街上&#xff0c;nginx挥舞着它的锅铲——哦不&#xff0c;是…

消息队列面试题

目录 1. 为什么使用消息队列 2. 消息队列的缺点 3. 消息队列如何选型&#xff1f; 4. 如何保证消息队列是高可用的 5. 如何保证消息不被重复消费&#xff08;见第二条&#xff09; 6. 如何保证消息的可靠性传输&#xff1f; 7. 如何保证消息的顺序性&#xff08;即消息幂…