您的位置:首页 > 文旅 > 美景 > 数学建模之数据分析【八】:数据预处理之数据格式化

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

2024/12/26 22:29:09 来源:https://blog.csdn.net/lmx1458070445/article/details/141456584  浏览:    关键词:数学建模之数据分析【八】:数据预处理之数据格式化

文章目录

  • 一、在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 pddata = {'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 pddata = {'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}'.formatformatted_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 pddata = {'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 pddf = 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 pddate_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 pddate_sr = pd.to_datetime(pd.Series("2020-12-08"))
change_format = date_sr.dt.strftime('%d/%m/%Y') #日/月/print(change_format)

在这里插入图片描述

  • 示例三:
import pandas as pddate_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 pddf = 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 pdplayer_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 pdplayer_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)

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com