首页 > 其他分享 >数据分析神器Pandas快速入门3类型转换

数据分析神器Pandas快速入门3类型转换

时间:2024-06-30 20:09:13浏览次数:16  
标签:类型转换 数据分析 mpg city 19 18 astype dtype Pandas

序列类型转换

3.1 自动转换

在pandas 1.0 中,引入了一种新的转换方法.convert_dtypes。它会尝试将Series 换为支持 pd.NA 类型。以city_mpg 系列为例,它将把类型从int64转换为Int64:

>>> city_mpg.convert_dtypes()
0        19
1         9
2        23
3        10
4        17
         ..
41139    19
41140    20
41141    18
41142    18
41143    16
Name: city08, Length: 41144, dtype: Int64
>>> city_mpg.astype('Int16')
0        19
1         9
2        23
3        10
4        17
         ..
41139    19
41140    20
41141    18
41142    18
41143    16
Name: city08, Length: 41144, dtype: Int16
>>> city_mpg.astype('Int8')
Traceback (most recent call last):
...

要指定系列数据的类型,可以尝试使用.astype 方法。我们的城市里程可以保存为16位整数,但8位整数就不行了,因为该符号类型的最大值是127,而我们有一些汽车的值是150。使用更窄的类型,就能减少内存使用,从而有更多内存处理更多数据。可以使用NumPy来检查整数和浮点类型的限制:

>>> np.iinfo('int64')
iinfo(min=-9223372036854775808, max=9223372036854775807, dtype=int64)
>>> np.iinfo('uint8')
iinfo(min=0, max=255, dtype=uint8)
>>> np.finfo('float16')
finfo(resolution=0.001, min=-6.55040e+04, max=6.55040e+04, dtype=float16)
>>> np.finfo('float64')
finfo(resolution=1e-15, min=-1.7976931348623157e+308, max=1.7976931348623157e+308, dtype=float64)

参考资料

3.2 内存使用

要计算系列的内存使用情况,可以使用.nbytes属性或.memory_usage方法。后者在处理object类型时非常有用,因为可以通过deep=True来计算系列中 Python 对象的内存使用量。

>>> city_mpg.nbytes
329152
>>> city_mpg.astype('Int16').nbytes
123432

autos的make列包含字符串,并作为对象存储。要获得包含字符串的内存量需要使用.memory_usage 方法:

>>> make = df.make
>>> make.memory_usage()
KeyboardInterrupt
>>> make.nbytes
329152
>>> make.memory_usage()
329280
>>> make.memory_usage(deep=True)
2606395

.nbytes只是数据正在使用的内存,不含序列的辅助部分。.memory_usage包括索引内存,还可能包括object类型的等。

3.3 字符串和分类

如果向 .astype 方法传递str,它还可以将数字序列转换为字符串

>>> city_mpg.astype(str)
0        19
1         9
2        23
3        10
4        17
         ..
41139    19
41140    20
41141    18
41142    18
41143    16
Name: city08, Length: 41144, dtype: object
>>> city_mpg.astype(str)
0        19
1         9
2        23
3        10
4        17
         ..
41139    19
41140    20
41141    18
41142    18
41143    16
Name: city08, Length: 41144, dtype: object

分类序列对字符串数据非常有用,可以节省大量内存。这是因为当你有字符串数据时pandas会存储Python字符串。
当你将其转换为分类数据时,pandas不再为每个值使用Python字符串,而是对其进行优化,因此重复值不会重复。您仍然可以使用.str 属性的所有功能,但可能会节省大量内存(如果您有很多重复值)并提高性能,因为您不需要执行那么多字符串操作。

3.4 有序分类

要创建有序分类,需要定义自己的 CategoricalDtype:

>>> values = pd.Series(sorted(set(city_mpg)))
>>> city_type = pd.CategoricalDtype(categories=values,
...     ordered=True)
>>> city_mpg.astype(city_type)
0        19
1         9
2        23
3        10
4        17
         ..
41139    19
41140    20
41141    18
41142    18
41143    16
Name: city08, Length: 41144, dtype: category
Categories (105, int64): [6 < 7 < 8 < 9 ... 137 < 138 < 140 < 150]

下表列出了可以传入 .astype 的类型。

3.5 其他类型

.to_numpy方法(或.values属性)返回NumPy数组,而.to_list返回Python列表。一般不要使用这些方法。如果直接使用 NumPy,有时会提高速度,但也有缺点。使用Python列表会大大降低代码速度。

如果你只想要单列的数据帧,你可以使用.to_frame 方法:

>>> city_mpg.to_frame()
       city08
0          19
1           9
2          23
3          10
4          17
...       ...
41139      19
41140      20
41141      18
41142      18
41143      16

[41144 rows x 1 columns]

此外,还有许多将数据导出为其他格式的转换方法,包括 CSV、Excel、HDF5、SQL、JSON 等。这些方法也存在于数据帧中,在序列中应用不多。

要转换为日期时间,请使用pandas中的 to_datetime 函数。如果要添加时区信息,则需要更多步骤。有关日期的章节将对此进行讨论。

标签:类型转换,数据分析,mpg,city,19,18,astype,dtype,Pandas
From: https://www.cnblogs.com/testing-/p/18276123

相关文章

  • AI数据分析012:动态展示全球第一股英伟达10年股价走势
    文章目录一、介绍二、输入内容三、输出内容一、介绍英伟达在过去十年的股价走势展示了其在市场上的强劲表现和显著增长。自1999年上市以来,英伟达的股价经历了多次显著的涨幅,并在2024年达到了历史新高。从2023年6月的数据来看,英伟达的股价为386.54美元/股,市值为9......
  • AI数据分析013:根据时间序列数据生成动态条形图
    文章目录一、介绍二、输入内容三、输出内容一、介绍动态条形竞赛图(BarChartRace)是一种通过动画展示分类数据随时间变化的可视化工具。它通过动态条形图的形式,展示不同类别在不同时间点的数据排名和变化情况。这种图表非常适合用来展示时间序列数据的变化,能够直......
  • AI数据分析004:统计《庆余年2》中的小人物有哪些?
    文章目录一、介绍二、输入内容三、输出内容一、介绍《庆余年2》除了主角表演经常,每个配角小人物也很出彩。那到底有哪些小人物呢?二、输入内容在deepseek中输入提示词:你是一个Python编程专家,要写一个Python脚本,具体步骤如下:读取文档:"D:\qyn\庆余年第二季剧......
  • AI数据分析011:Excel表格智能判断数据起点来计算增长率
    文章目录一、介绍二、输入内容三、输出内容一、介绍计算Excel表格中2023年1月到2024年4月的总增长率和复合增长率。如果数据都有的情况下,公式很简单:总增长率=(O2-B2)/B2复合增长率=POWER((O2/B2),1/13)-1但是,2023年1月、2月、3月的数据,有些有,有些没有,是0......
  • 空间单细胞|基于图像的数据分析(3)
    引言在这篇指南中,我们介绍了Seurat的一个新扩展功能,用以分析新型的空间解析数据,将重点介绍由不同成像技术生成的三个公开数据集。VizgenMERSCOPE(用于小鼠大脑研究)NanostringCosMx空间分子成像仪(用于FFPE人类肺组织)AkoyaCODEX(用于人类淋巴结研究)人肺:NanostringCosMxSpa......
  • 这个大纲涵盖了从基础到高级的 Log Parser 使用技巧和实践,帮助用户全面掌握这一强大的
    LogParser是一个功能强大的工具,用于处理和分析各种日志文件和数据源。以下是一个初级使用教程的大纲,帮助你快速入门和理解其基本功能和用法:1. 介绍和安装什么是LogParser?LogParser是一种强大的命令行工具,用于从多种日志文件、事件日志、CSV文件以及其他结构化数据......
  • 基于JavaWeb+Spring Boot的校友录管理与数据分析系统(论文)
    目录1绪论11.1研究背景11.2国内外研究现状21.2.1国内研究现状21.2.2国外研究现状31.3研究的目的和意义41.3.1研究目的41.3.2研究意义41.4论文的内容和结构52系统相关技术概述72.1Java技术简介72.2SpringBoot框架82.3MySQL数据库技术简介9......
  • 基于SpringBoot+AIGC的智能数据分析平台的设计与实现【源码】
    一、引言随着大数据时代的到来,企业和组织迫切需要一种能够自动化处理、分析大量数据,并从中提取有价值信息的智能系统。本项目旨在设计并实现一个基于SpringBoot框架,整合人工智能生成内容(AIGC)技术的智能数据分析平台。该平台将利用机器学习和自然语言处理技术,对数据进行深......
  • 【python】python海底捞门店营业数据分析与可视化(数据集+源码+论文)【独一无二】
    ......
  • python数据分析
    数据可视化基础定义与目的定义1.数据可视化是将数据以图形或图像的形式展示出来的过程2.目的是帮助人们更直观地理解、分析和解释数据目的1.揭示数据中的模式、趋势和关联2.辅助决策制定和问题解决3.增进数据沟通和交流数据可视化类型matplotlib库实现简单数据可视化......