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()函数或自定义逻辑来实现。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

判断闰年(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int year 2000;//执行循环判断&#xff1b;while (year < 2010){//执行流程&#xff1b;//判断能否整除4&#xff1…

配置IPv4静态路由示例

配置IPv4静态路由示例 图1 配置IP静态路由组网图 组网需求配置思路操作步骤配置文件 组网需求 如图1所示&#xff0c;STA1、STA2和PC1属于不同网段&#xff0c;STA1在AP1中上线&#xff0c;STA2在AP2中上线&#xff0c;要求配置静态路由&#xff0c;使PC1与STA1和STA2能够互…

python之万花尺

1、使用模块 import sys, random, argparse import numpy as np import math import turtle import random from PIL import Image from datetime import datetime from math import gcd 依次使用pip下载即可 2、代码 import sys, random, argparse import numpy as np imp…

Yolo系列算法-理论部分-YOLOv4

0. 写在前面 YOLO系列博客&#xff0c;紧接上一篇Yolo系列算法-理论部分-YOLOv3-CSDN博客 1. YOLOv4-实战破局 2020年&#xff0c;YOLO系列的作者发表声明&#xff0c;出于道德方面的考虑&#xff0c;退出CV界&#xff0c;Alexey Bochkovskiy团队接手&#xff0c;正式推出YOLO…

财富池指标公式--通达信主力资金指标公式,主力资金流向怎么看?

今日分享的通达信主力资金指标公式&#xff0c;是一个分析主力资金进出的指标。 具体信号说明&#xff1a; 当紫色的起涨点主力资金线和红色的拉升资金同时上传0线&#xff0c;并且紫色的拉升线超过资金线&#xff0c;大盘进入派发阶段&#xff0c;后市看涨&#xff0c;是参考…

【python】成功解决使用 np.savetxt 出现ValueError: fname must be a string or file handle

【python】成功解决使用 np.savetxt 出现ValueError: fname must be a string or file handle &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入…

vue2点击左侧的树节点(el-tree)定位到对应右侧树形表格(el-table)的位置,树形表格懒加载

左侧树代码 <el-tree :data"treeData" node-key"id" default-expand-all"" //节点默认全部展开:expand-on-click-node"false" //是否在点击节点的时候展开或者收缩节点:props"defaultProps" node-click"handleNodeC…

大数据架构设计

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/136657478 一. 基本概念 1、解决传统数据架构无法及时响应用户请求的常用解决方法&#xff1a; ● 增加异步处理队列&#xff0c;通过工作处理层批量处理异步处理队列中的数据修改请求。 ● 建立数据库…

uni-popup(实现自定义弹窗提示、交互)

一般提示框的样式&#xff0c;一般由设计稿而定&#xff0c;如果用uniapp的showmodel&#xff0c;那个并不能满足我们需要的自定义样式&#xff0c;所以最好的方式是我们自己封装一个&#xff01;&#xff08;想什么样就什么样&#xff09;&#xff01; 一、页面效果 二、使用…

BUUCTF-----[GXYCTF2019]禁止套娃

题目 目录扫描&#xff0c;扫到.git泄露&#xff0c;使用工具查看到index.php的源码 <?php include "flag.php"; echo "flag在哪里呢&#xff1f;<br>"; if(isset($_GET[exp])){if (!preg_match(/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i,…

独家揭秘:短剧app开发的5大关键技巧

在移动互联网时代&#xff0c;短剧app成为了各大平台竞相推广的热门产品之一。想要在激烈的市场竞争中脱颖而出&#xff0c;短剧app开发必须做到精益求精。作为短剧app开发领域的专家&#xff0c;我将揭秘短剧app开发的5大关键技巧&#xff0c;帮助开发者们在激烈的竞争中立于不…

力扣大厂热门面试算法题 39-41

39. 组合总和&#xff0c;40. 组合总和 II&#xff0c;41. 缺失的第一个正数&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.17 可通过leetcode所有测试用例。 目录 39. 组合总和 解题思路 完整代码 Python Java 40. 组合…

前端应用开发实验:Vue的特性

目录 实验目的实验内容图片浏览功能代码实现效果 简单购物车功能代码实现效果 汇率换算功能代码实现效果 关于需要准备的内容&#xff0c;如Vue的下载就不多赘述了 实验目的 &#xff08;1&#xff09;掌握vue实例编写的语法和基本选项的使用 &#xff08;2&#xff09;在实际…

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

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

十八、软考-系统架构设计师笔记-真题解析-2022年真题

软考-系统架构设计师-2022年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.云计算服务体系结构如下图所示&#xff0c;图中①、②、③分别与SaaS、PaaS、IaaS相对应&#xff0c;图中①、②、③应为( )。 A.应用层、基础设施层、平台层 B.应用层、平台层、基础设施层 C.平…

尊嘟假嘟,只需HiFi测序即可获得T2T基因组?

探秘动植物物种进化及遗传多样性的第一步往往是进行基因组测序&#xff0c;基因组从头组装&#xff08;Genome De novo assembly&#xff09; 是指从测序数据中重建生物基因组序列的过程。组装一直是生物信息学中的核心问题。 然而&#xff0c;到2019年底完成图这个概念仍然只…

香港公司变更注册地址所需材料及流程全解析

香港公司变更注册地址&#xff1a;所需材料及流程全解析 各位老板好&#xff0c;我是经典世纪胡云帅&#xff0c;随着业务的拓展和发展&#xff0c;香港公司可能需要变更其注册地址。变更注册地址不仅关系到公司的日常运营&#xff0c;还与公司的法律地位和品牌形象息息相关。本…

Grok-1 开源:马斯克旗下xAI公司发布革命性AI模型,开启开源大模型新篇章|3140亿参数

自从埃隆马斯克&#xff08;Elon Musk&#xff09;上周&#xff08;3月11日&#xff09;在 X 平台上宣布 Grok 将于本周开源的消息后&#xff0c;无数目光便聚焦于此&#xff0c;期待之情溢于言表。继 Meta 旗下的 Llama 2 模型开源之后&#xff0c;开源大模型界便充满了对新技…

Linux查看硬件型号详细信息

1.查看CPU &#xff08;1&#xff09;使用cat /proc/cpuinfo或lscpu &#xff08;2&#xff09;使用dmidecode -i processor Dmidecode 这款软件允许你在 Linux 系统下获取有关硬件方面的信息。Dmidecode 遵循 SMBIOS/DMI 标准&#xff0c;其输出的信息包括 BIOS、系统、主板、…

【Unity】获取游戏对象或组件的常用方法

前言 在Unity开发过程中&#xff0c;我们经常需要获取组件&#xff0c;那么在Unity里如何获取组件呢&#xff1f; 一、获取游戏对象 1.GameObject.Find GameObject.Find 是通过物体的名称获取对象的 所以会遍历当前整个场景&#xff0c;效率较低 而且只能获取激活状态的物体…