数学建模之数据分析【八】:数据预处理之数据格式化

news2024/9/22 9:51:36

文章目录

  • 一、在Pandas中格式化数据框的浮点列
    • 1.1 将列值四舍五入到两位小数
    • 1.2 使用逗号和小数精度的 Pandas DataFrame 格式
    • 1.3 在 Pandas DataFrame 中格式化和缩放人口数据
  • 二、如何检查Pandas DataFrame 中的数据类型
    • 2.1 创建 DataFrame 检查 DataType
      • 2.1.1 创建数据集
      • 2.1.2 检查数据类型
    • 2.2 DataFrame.select_dtypes依照类型选择数据
  • 三、如何在Python中更改Pandas日期时间格式
    • 3.1 strftime()功能
    • 3.2 实用例子
  • 四、在Pandas数据框中将列类型从字符串转换为日期时间格式
    • 4.1 基本方法
    • 4.2 使用 pd.to_datetime() 函数将列转换为 DateTime
    • 4.3 使用 DataFrame.astype() 函数将列转换为 DateTime
    • 4.4 使用 pandas.to_datetime() 将列类型从 String 转换为 'yyyymmdd' 格式

获取更多数模资料,请关注
公众号:快乐数模
小红书:学数模使我快乐

数据预处理是任何数据分析或机器学习项目中的关键步骤。它涉及各种任务,目的是将原始数据转换为干净可用的格式。正确准备的数据确保更准确、可靠的分析结果,从而做出更好的决策和有效的预测模型。近期的数据预处理章节将涵盖数据准备的关键方面,包括数据格式化、数据清洗、数据转换和数据抽样。
本篇是数据预处理之数据格式化。

一、在Pandas中格式化数据框的浮点列

呈现数据时,按所需的格式显示数据是一个关键部分。有时,值是如此大,以至于我们只想显示其中部分(或按照我们意愿显示固定格式)。
下面是使用 Python 在 Pandas 中格式化数字的各种方法。

1.1 将列值四舍五入到两位小数

代码示例:

import pandas as pd

data = {'Month': ['January', 'February', 'March', 'April'],
        'Expense': [21525220.653, 31125840.875, 23135428.768, 56245263.942]}

dataframe = pd.DataFrame(data, columns=['Month', 'Expense'])
 
print("Given Dataframe :\n", dataframe)

pd.options.display.float_format = '{:.2f}'.format    #将数值设置为显示两位小数的字符串,不使用千位分隔符。
 
print('\nResult :\n', dataframe)

结果显示
在这里插入图片描述

1.2 使用逗号和小数精度的 Pandas DataFrame 格式

下面的代码使用 pandas 创建一个 DataFrame,即“products_dataframe”,其中包含产品名称及其各自的价格。它打印初始 DataFrame,然后用逗号设置“Price”列的格式,并将值四舍五入到两位小数。

import pandas as pd
 
data = {'Product': ['Laptop', 'Phone', 'Tablet', 'Desktop'],
        'Price': [1200.50, 799.99, 349.75, 1500.25]}
 
products_dataframe = pd.DataFrame(data, columns=['Product', 'Price'])
 
print("Given Dataframe :\n", products_dataframe)
 
pd.options.display.float_format = '{:,.2f}'.format
 
formatted_products = products_dataframe.copy()
formatted_products['Price'] = formatted_products['Price'].apply(lambda x: '{:,.2f}'.format(x))  #将浮点数转换为带逗号的字符串,保留两位小数,使用千位分隔符。
 
# Display the formatted DataFrame
print('\nResult :\n', formatted_products)

在这里插入图片描述

1.3 在 Pandas DataFrame 中格式化和缩放人口数据

代码利用 pandas 库创建一个名为“city_dataframe”的 DataFrame,其中包含城市名称及其各自的人口。最初显示 DataFrame,之后使用逗号设置填充列的格式,并将值缩放到数百万。

import pandas as pd
 
data = {'City': ['New York', 'Los Angeles', 'Chicago', 'Houston'],
        'Population': [8336817, 3980400, 2716000, 2328000]}
 
city_dataframe = pd.DataFrame(data, columns=['City', 'Population'])
 
print("Given DataFrame:\n", city_dataframe)
 
pd.options.display.float_format = '{:,.2f}'.format
city_dataframe['Population'] = city_dataframe['Population'] / 1000000 
 
print('\nResult:\n', city_dataframe)

在这里插入图片描述

二、如何检查Pandas DataFrame 中的数据类型

Pandas DataFrame 是一种可变大小和异构表格数据的二维数据结构。Python 中提供了不同的内置数据类型。用于检查数据类型的两种方法是pandas.DataFrame.dtypes 和 pandas.DataFrame.select_dtypes.

2.1 创建 DataFrame 检查 DataType

创建一个购物商店的数据集,包含有关客户序列号、客户名称、所购商品的产品 ID、产品成本和购买日期的数据

2.1.1 创建数据集

#importing pandas as pd
import pandas as pd
  
df = pd.DataFrame({
'Cust_No': [1,2,3],
'Cust_Name': ['Alex', 'Bob', 'Sophie'],
'Product_id': [12458,48484,11311],
'Product_cost': [65.25, 25.95, 100.99],
'Purchase_Date': [pd.Timestamp('20180917'),
                  pd.Timestamp('20190910'),
                  pd.Timestamp('20200610')]
}) 
df

在这里插入图片描述

2.1.2 检查数据类型

使用df.dtypes

  • 示例一:检查所有列的数据类型
df.dtypes

在这里插入图片描述

  • 示例二:检查特定列的数据类型
df.Cust_No.dtypes

在这里插入图片描述

  • 示例三:检查特定列的数据类型
df.Cust_No.dtypes

在这里插入图片描述

2.2 DataFrame.select_dtypes依照类型选择数据

与检查数据类型不同,用户可以选择执行检查以获取特定数据类型的数据(如果存在),否则将返回一个空数据集。此方法根据列 dtypes 返回 DataFrame 列的子集。

  • 示例一:返回 int64 的列
df.select_dtypes(include = 'int64')

在这里插入图片描述

  • 示例二:除 int64 外的列都选
df.select_dtypes(exclude = 'int64')

在这里插入图片描述

  • 示例三:打印无bool类型的列(空)
df.select_dtypes(include = "bool")

在这里插入图片描述

三、如何在Python中更改Pandas日期时间格式

日期时间默认格式为“YYYY-MM-DD”。因此,2020 年 12 月 8 日,日期格式将显示为“2020-12-08”。日期时间格式可以更改,通过更改,我们的意思是更改格式的顺序和样式。

3.1 strftime()功能

strftime() 可以更改 Python 中的日期格式。

strftime(format) 

其中,format 是一个字符串,表示所需的日期格式类型。

  • 年份 %y
  • 对于月份 %m
  • 对于第 %d 天
    方法:
  • 导入模块
  • 提供日期
  • 使用上述功能更改格式

3.2 实用例子

  • 示例一:
import pandas as pd
 
date_sr = pd.Series(pd.date_range(
    '2019-12-31', periods=3, freq='M', tz='Asia/Calcutta')) #生成三个月的日期,频率为M,时区为印度标准时间
 
 #设置索引
ind = ['Day 1', 'Day 2', 'Day 3']
 
date_sr.index = ind  #将索引赋值给date_sr的索引
change_format = date_sr.dt.strftime('%d,%m,%Y') #格式化日月年
 
print(change_format)

在这里插入图片描述

  • 示例二
import pandas as pd

date_sr = pd.to_datetime(pd.Series("2020-12-08"))
change_format = date_sr.dt.strftime('%d/%m/%Y') #日/月/
 
print(change_format)

在这里插入图片描述

  • 示例三:
import pandas as pd

date_sr = pd.to_datetime(pd.Series("2012-09-02"))
change_format = date_sr.dt.strftime('%d-%m-%Y')

print(change_format)

在这里插入图片描述

四、在Pandas数据框中将列类型从字符串转换为日期时间格式

Pandas 中处理数据时,遇到时间序列数据并不罕见,我们知道 Pandas 是处理 Python 中时间序列数据的非常有用的工具。
让我们看看如何将字符串的 DataFrame 列(dd/mm/yyyy 格式)转换为日期时间格式。如果日期的格式不正确,我们将无法对日期执行任何基于时间序列的操作。为了能够使用它,我们需要将日期转换为日期时间格式。

4.1 基本方法

将类型从字符串转换为日期时间格式的方法:

  • 使用 pd.to_datetime() 函数
  • 使用 DataFrame.astype() 函数
  • 使用 pandas.to_datetime()函数

4.2 使用 pd.to_datetime() 函数将列转换为 DateTime

利用 pandas 库创建一个名为 ‘df’ 的 DataFrame,其中包含 ‘Date’、‘Event’ 和 ‘Cost’ 列,然后打印 DataFrame 并使用该方法显示有关每列的数据类型和非 null 值的信息.

import pandas as pd

df = pd.DataFrame({'Date':['11/8/2011', '04/23/2008', '10/2/2019'],
                'Event':['Music', 'Poetry', 'Theatre'],
                'Cost':[10000, 5000, 15000]})

print(df)

df.info()

在这里插入图片描述
下面进行转换:

df['Date']= pd.to_datetime(df['Date'])

df.info()

在这里插入图片描述

4.3 使用 DataFrame.astype() 函数将列转换为 DateTime

使用 DataFrame.astype() 函数,创建一个 pandas DataFrame ‘df’,其中包含 ‘Date’、‘Event’ 和 ‘Cost’ 列,打印 DataFrame 并输出有关每列中数据类型和非 null 值的信息,特别关注使用该方法的 ‘Date’ 列 。

  • 示例一:
df['Date'] = df['Date'].astype('datetime64[ns]')

df.info()

在这里插入图片描述

  • 示例二:

import pandas as pd

player_list = [['200712',50000],['200714',51000],['200716',51500],
            ['200719',53000],['200721',54000],
            ['200724',55000],['200729',57000]]

df = pd.DataFrame(player_list,columns=['Dates','Patients'])

print(df)
print()

print(df.dtypes) 

在这里插入图片描述
经过格式化后:

df['Dates'] = pd.to_datetime(df['Dates'], format='%y%m%d') 

print(df)
print()
print(df.dtypes) 

在这里插入图片描述

4.4 使用 pandas.to_datetime() 将列类型从 String 转换为 ‘yyyymmdd’ 格式

import pandas as pd

player_list = [['20200712',50000,'20200812'],
               ['20200714',51000,'20200814'],
               ['20200716',51500,'20200816'],
               ['20200719',53000,'20200819'],
               ['20200721',54000,'20200821'],
               ['20200724',55000,'20200824'],
               ['20200729',57000,'20200824']]

df = pd.DataFrame(
  player_list,columns = ['Treatment_start',
                         'No.of Patients',
                         'Treatment_end'])

print(df)
print()
print(df.dtypes)

在这里插入图片描述
经过格式化后
在这里插入图片描述

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

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

相关文章

《前端攻城狮 · Vue 使用腾讯地图》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

React18快速入门教程

项目流程 开发流程 技术选型 创建项目 执行命令: pnpm create vite项目配置 editorconfig:用于配置编辑器,实现使用不同的编辑器打开效果是相同的包配置:主要用于配置国内源eslint配置:主要用于配置语法规则prettier&…

leetCode - - - 二分查找

目录 1.二分查找(Leetcode 704) 2.搜索插入位置( LeetCode 35 ) 3.寻找峰值(LeetCode 162) 4.旋转数组的最小数字(BM21) 5.总结 1.二分查找(Leetcode 704&#xff0…

基于Python的机器学习系列(7):多元逻辑回归

在本篇博文中,我们将探讨多元逻辑回归,它是一种扩展的逻辑回归方法,适用于分类数量超过两个的场景。与二元逻辑回归不同,多元逻辑回归使用Softmax函数将多个类别的概率输出映射到[0, 1]范围内,并确保所有类别的概率和为…

利用漏洞实现 Outlook 的 RCE:第一部分

概述 2023 年 3月补丁星期二解决的漏洞中,有一个是Outlook 的一个严重漏洞,编号为CVE-2023-23397,该漏洞被 Forest Blizzard 在野利用,微软已将其确定为俄罗斯国家支持的威胁行为者。2023 年 12 月,微软与波兰网络司令部 (DKWOC) 联合发布消息称,他们发现同一威胁行为者…

Debug-023-Document.createElement()的使用

Document.createElement() document.createElement()是在对象中创建一个对象,要与appendChild() 或 insertBefore()方法联合使用。 appendChild() 方法在节点的子节点列表末添加新的子节点。 insertBefore() 方法在节点的子节点列表任意位置插入新的节点。 用途举…

Linux -- git

1 啥是git git是一个代码的历史版本管理工具,通过用树形结构管理一个代码版本可以快速实现回滚等操作 1.1 git基本概念 工作区(Working Directory/Working Tree): 这是你当前正在处理项目文件的地方。你可以在工作区中创建、修改…

非关系型数据库MongoDB(文档型数据库)介绍与使用实例

MongoDB介绍 MongoDB是一种开源的文档型数据库管理系统,它使用类似于JSON的BSON格式(Binary JSON)来存储数据。与传统关系型数据库不同,MongoDB不使用表和行的结构,而是采用集合(Collection)(My…

漏洞发现——漏洞扫描工具的对比

本帖字的实验环境是来自学校的靶机 文章目录 Xray介绍安装教程使用教程主动扫描单个url扫描批量扫描 被动扫描联合游览器联合burpsuite Awvs介绍安装教程使用教程联合xary三者联合bp和xray Goby介绍安装教程使用教程 Afrog介绍安装教程使用教程 Vulmap介绍安装教程使用教程 Poc…

SpringMVC核心机制环境搭建

文章目录 1.SpringMVC执行流程1.基础流程图2.详细流程图 2.安装Tomcat1.下载2.解压到任意目录即可3.IDEA配置Tomcat1.配置Deloyment2.配置Server 3.创建maven项目1.创建sun-springmvc模块(webapp)2.查看是否被父模块管理3.pom.xml引入依赖4.目录5.SunDis…

电子电气架构--- 智能汽车电子架构的核心诉求

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不…

Android点击和触摸音量小的问题(问题追踪)

有客户反馈:A14触摸声音没有 于是乎,追踪setting打开触摸声音的代码: Overridepublic boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {if (preference mVibrateWhenRinging) {Settings.System…

Linux | 进程优先级进程的环境变量

文章目录 进程概念4、进程优先级4.1基本概念4.2查看系统进程4.2.1 ps -l4.2.2 PRI & NI 4.3用top命令更改已存在进程的nice: 5、环境变量5.1常见环境变量5.2查看环境变量5.3测试PATH配置环境变量 5.4代码中获取环境变量5.4代码中获取环境变量 进程概念 4、进程…

RFID 智慧城市书房:开启智慧阅读新时代

在当今数字化、智能化的时代,人们对于阅读的需求和体验也在不断升级。RFID 智慧城市书房的出现,为满足人们对高品质阅读环境的追求提供了全新的途径。 一、RFID 技术:智慧城市书房的核心支撑 RFID,即射频识别技术,是一…

DDS IP实现啁啾信号

简介 DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点,对数字信号处理及其硬件实现有着很重要的作用。DDS 的基本…

18945 小团的配送团队

### 思路 1. **建图**:将订单视为图的节点,已知关系视为图的边,构建无向图。 2. **连通分量**:使用深度优先搜索(DFS)或广度优先搜索(BFS)找到图中的所有连通分量。 3. **排序**&…

探索人工智能的未来:埃里克·施密特2024斯坦福大学分享六

代理与文本生成模型的未来展望 您认为明年代理或文本生成模型会出现通货膨胀点吗? 不,不会。 我听到了类似的观点,尤其是埃里克科维茨的看法。他有一个很好的方式来阐述这三个趋势。虽然我之前也听说过这些趋势,但将它们整合起…

C语言破墙镐对称飞迷宫

目录 开头程序程序的流程图程序游玩的效果(gif)结尾 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <Windows.h> enum WASD {W,A,S,D }; void printmaze(const char s…

【CTF Web】CTFShow cookie泄露 Writeup(cookie泄露+URL解码)

cookie泄露 10 cookie 只是一块饼干&#xff0c;不能存放任何隐私数据 解法 按 F12 打开开发者工具&#xff0c;点击网络&#xff0c;刷新页面。 flag 在 响应标头的 Set-Cookie 中。 用 URL 解码工具转换。 Flag ctfshow{8483acdb-a677-4c77-8aff-438d44ff1a3e}声明 本博客…

论文翻译软件哪个好用?如何将论文转化?

在学术海洋里遨游&#xff0c;每一篇论文都是思想的灯塔。 但当这座灯塔用外语构建&#xff0c;如何让它在中国读者面前同样熠熠生辉&#xff1f;别担心&#xff0c;把论文翻译成中文的旅程&#xff0c;不仅可以轻松启航&#xff0c;还能优雅靠岸&#xff01; 不知道怎么把论…