当前位置:实例文章 » Python实例» [文章]【Python】Pandas使用中的3个小技巧

【Python】Pandas使用中的3个小技巧

发布人:shili8 发布时间:2023-03-22 03:21 阅读次数:32

Pandas使用中的3个小技巧

  • 1. to_period函数
  • 2. cumsum和groupby
  • 3. category数据类型

在使用Python的Pandas库操作DataFrame的时候,经常会遇到处理日期转换、分组统计,标签类型转换的问题,这里介绍三个使用的小技巧,虽然不常用,但是很高效!

首先,创建有一个 3 列 100 行的 DataFrame。date 列包含 100 个连续日期,class 列包含 4 个以对象数据类型存储的不同值,amount 列包含 10 到 100 之间的随机整数。

import numpy as np
import pandas as pd
df = pd.DataFrame({
 
  "date": pd.date_range(start="2021-11-20", periods=100, freq="D"),
  "class": ["A","B","C","D"] * 25,
  "amount": np.random.randint(10, 100, size=100)})

df.head()

示例数据

1. to_period函数

在 Pandas 中,使用to_period函数可以将日期转换为特定的时间间隔。使用该方法可以获取具有许多不同间隔或周期的日期,例如日、周、月、季度等。

例如,针对于时间类型的列,month方法只返回在许多情况下没有用处的月份的数值,无法区分2020年12月和2021年12月。但是通过使用to_period函数的参数”M“实现时间序列。代码如下:

# 为年月和季度创建新列
df['month']=df['date'].dt.to_period("M")
df['quarter'] = df['date'].dt.to_period('Q')
df.head()

to_period
还可以查看DataFrame中不同的年月和季度值。
查看数值

2. cumsum和groupby

cumsum是一个非常有用的Pandas函数。它计算列中值的累积和。代码如下:

df['cumulative_sum']=df['amount'].cumsum()
df.head()

cumsum
这样就获得了amount列的列值的累积总和。但是它只是全部的总和没有考虑分类。在某些情况下,可能需要分别计算不同类别的累积和。

Pandas中只需要按类列对行进行分组,然后应用cumsum函数。代码如下:
查看A类的结果
类的累积总和列包含为每个类单独计算的累积值总和。

3. category数据类型

有时候,可能需要处理具有有限且固定数量的值的分类数据。例如在DataFrame中,”class“列具有4个不同值的分类变量:A、B、C、D。默认情况下,该列的数据类型为object。
默认
另外,Pandas还有一个“category”数据类型,它比object数据类型消耗更少的内存。因此最好尽可能使用category数据类型。
category
可以比较class列和class_category列的内存消耗:
memory_usage()
可以发现,class_category列消耗的内存不到class列的一半。相差496字节。虽然并不多,但是当使用大型数据集时,这样差异就会被放大,使用category数据类型就可以节省大量的空间。

相关标签:

免责声明

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱290110527@qq.com删除。

其他信息

其他资源

Top