数据STUDIO

5 个巨好用的 Pandas 技巧

Image

Image

今天我们要深入学习如何利用Pandas处理这些宝贵的数据,并在日常任务中发现有趣的事情。

在本文中,云朵君将和你一起学习如何使用这些改变游戏规则的技术,确保你以前所未有的方式使用Pandas。

使用query简化数据过滤

Pandas的query()功能将为你提供一种简洁的方法,根据条件从Dataframe中选择行。

假设你正在分析数据集,并且想要快速找到所有大于500美元的交易。

不用使用复杂的方法,你可以使用query()来表达这个条件。

import pandas as pd

# 零售店销售样本数据集
data = {'Product': ['Toy', 'Book', 'Clothing', 'Electronics'],
        'Sales': [150, 200, 550, 1200]}
df = pd.DataFrame(data) 

# 使用 query() 查找高价值销售额
high_value_sales = df.query('Sales > 500')
high_value_sales

Image

在这一个中;

  1. df 首先创建一个包含不同产品销售数据的DataFrame 。
  2. 接下来使用该query()方法查找并显示销售额大于 500 美元的所有行。

使用 Pandas 重采样掌握时间序列分析

Pandas 可以轻松处理随时间变化的数据。此类数据以日期或时间标记。例如,研究网站访问量的人可能会查看每天的访客数量。

使用 Pandas,你可以将这些每日数据分组为几周或几个月。这有助于你查看较长时期内的趋势。

import pandas as pd 
import numpy as np 

# 创建日期范围
date_range = pd.date_range(start= '1/1/2022' , end= '12/31/2022' , freq= 'D' ) 

# 模拟每日网站流量数据
Traffic_data = np.random.randint(low= 100 , high= 1000 , size= len (date_range)) 

# 创建 DataFrame
 df = pd.DataFrame({ 'Date' : date_range, 'Traffic' : Traffic_data}) 
df.set_index( 'Date' , inplace= True ) 

# 重新采样并计算月平均值
monthly_traffic = df.resample( 'M' ).mean() 

monthly_traffic

Image
  • 首先将会生成数据,展示一整年中每天网站的访问量,这是通过在特定时间间隔内生成随机数来实现的。
  • 接着,我们会使用“M”表示每月,这告知 Pandas 将数据按月份分组,并查找每个月的平均访问量。

通过这种方式,我们可以发现一段时间内的趋势,比如在某些月份是否有更多的人访问该网站,而无需担心每天的波动。

Pandas 中的分类数据

处理数据时,Pandas 对分类数据类型的支持可以起到很大的作用。

例如,分析客户反馈的数据科学家可能会将响应分类为:

  • “Positive”
  • “Neutral”
  • “Negative”

对这些类别使用分类数据类型可以使分析更有效率,数据更易于处理,例如应用 ML 模型或轻松过滤。

import pandas as pd 

# 示例数据:客户反馈
data = {'Feedback': ['Positive', 'Negative', 'Neutral', 'Positive', 'Negative']}
df = pd.DataFrame(data)

# 将 'Feedback' 列转换为分类数据类型
df['Feedback'] = df['Feedback'].astype('category')

print(df['Feedback'])
print(df['Feedback'].cat.codes)

Image

在此代码中,我们创建一个包含客户反馈的 DataFrame。然后,我们使用该astype('category')方法将“Feedback”列转换为分类类型。

这不仅减少了内存使用量,还可以用这些数据构建机器学习模型。

Pandas 中的多维数据分析

Pandas 有一个称为 MultiIndex 或分层索引的工具。它允许你处理具有两个以上级别的数据,就像在表中一样,但更简单。MultiIndex 组织这些数据,因此可以同时按时间和地点查看。

import pandas as pd

# 示例销售数据
data = { 
    'Year' : [ 2020 , 2020 , 2021 , 2021 ], 
    'Quarter' : [ 'Q1' , 'Q2' , 'Q3' , 'Q4' ], 
    'Sales' : [ 25000 , 30000 , 40000 , 35000 ] 
} 

# 创建 DataFrame
 df = pd.DataFrame(data) 

# 设置多索引
df.set_index([ 'Year' , 'Quarter' ], inplace= True ) 

df

Image

这里创建一个包含销售数据的 DataFrame,然后使用set_index()带有列表('Year'和'Quarter')的方法来创建一个 MultiIndex。

如有一些操作需要考虑年份和季度的操作,这招将会对我们有很大的帮助,例如切分数据来分析不同季度随时间变化的销售趋势。

优化内存

在处理数百万条大型数据时,Pandas 有专门工具来减少内存使用,并加快工作速度并处理更多数据。即你可以处理大量数据而无需使用太多计算机内存。

import pandas as pd 

# 示例大数据集
data = {'Name' : [ 'John' , 'Ana' , 'Peter' , 'Linda' ], 
        'Age' : [ 28 , 34 , 45 , 32 ], 
        'Income' : [ 50000 , 60000 , 80000 , 75000 ]} 

df = pd.DataFrame(data) 

# 优化前:检查内存使用情况
print("Before optimization:")
print (df.info(memory_usage= 'deep' ))

Image

优化代码如下:

# 通过转换为适当的数据类型进行优化
df [ 'Age' ] = df [ 'Age' ].astype( 'int8' ) 
df [ 'Income' ] = df [ 'Income' ].astype( 'int32' ) 

# 优化后:检查内存使用情况
print("\nAfter optimization:")
print (df.info(memory_usage= 'deep' ))

Image
🏴‍☠️宝藏级🏴‍☠️ 原创公众号『数据STUDIO』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括可戳👉Python|MySQL|数据分析|数据可视化|机器学习与数据挖掘|爬虫 等,从入门到进阶!

长按👇关注- 数据STUDIO -设为星标,干货速递ImageImage