百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Pandas 入门教程 - 第五课: 高级数据操作

liuian 2025-01-12 16:24 37 浏览


在前几节课中,我们学习了如何使用 Pandas 进行数据操作和可视化。在这一课中,我们将进一步探索一些高级的数据操作技巧,包括数据透视、分组聚合、时间序列处理以及高级索引和切片。

高级索引和切片

高级索引

Pandas 提供了强大的索引功能,可以让我们轻松地访问和操作数据。

布尔索引

import pandas as pd

# 创建一个简单的 DataFrame
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [25, 30, 35, 40],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
})

# 使用布尔索引选择年龄大于 30 的人
filtered_df = df[df['Age'] > 30]
print(filtered_df)
      Name  Age     City
2  Charlie   35  Chicago
3    David   40  Houston

切片和切片

# 使用切片选择特定范围的行和列
subset_df = df[1:3, 0:2]  # 选择第 2 行到第 3 行,第 1 列到第 2 列
print(subset_df)

位置索引

# 使用位置索引选择特定行和列
row_at_index_2 = df.iloc[1]  # 选择第 2 行
print(row_at_index_2)

column_at_index_1 = df.iloc[:, 0]  # 选择第 1 列
print(column_at_index_1)
Name            Bob
Age              30
City    Los Angeles
Name: 1, dtype: object
0      Alice
1        Bob
2    Charlie
3      David
Name: Name, dtype: object

标签索引

# 使用标签索引选择特定行和列
row_at_label_Bob = df.loc[df['Name'] == 'Bob']  # 选择 'Name' 为 'Bob' 的行
print(row_at_label_Bob)

column_at_label_Age = df.loc[:, 'Age']  # 选择 'Age' 列
print(column_at_label_Age)
  Name  Age         City
1  Bob   30  Los Angeles
0    25
1    30
2    35
3    40
Name: Age, dtype: int64

高级切片

Pandas 还支持更复杂的切片操作,如基于条件的切片。

基于条件的切片

# 使用条件表达式进行切片
filtered_df = df[(df['Age'] > 25) & (df['City'] == 'Chicago')]
print(filtered_df)
      Name  Age     City
2  Charlie   35  Chicago

分组聚合

分组聚合

Pandas 的 groupby() 方法允许我们对数据集进行分组,并对每个组进行聚合操作。

聚合函数

import pandas as pd

# 创建一个简单的 DataFrame
df = pd.DataFrame({
    'Category': ['A', 'A', 'B', 'B', 'C'],
    'Value': [10, 20, 30, 40, 50]
})

# 使用 groupby() 方法按 'Category' 列分组,并计算每个组的平均值
grouped_df = df.groupby('Category').mean()
print(grouped_df)
          Value
Category       
A          15.0
B          35.0
C          50.0

自定义聚合函数

# 定义一个自定义聚合函数
def custom_aggregate(values):
    return sum(values) / len(values)

# 使用 groupby() 方法按 'Category' 列分组,并使用自定义聚合函数
grouped_df_custom = df.groupby('Category').agg(custom_aggregate)
print(grouped_df_custom)
          Value
Category       
A          15.0
B          35.0
C          50.0

时间序列处理

时间序列数据处理

Pandas 提供了强大的时间序列处理功能,可以处理日期和时间数据。

创建时间序列

import pandas as pd

# 创建一个日期范围
dates = pd.date_range('2020-01-01', periods=100)

# 创建一个时间序列 DataFrame
ts_df = pd.DataFrame({
    'Date': dates,
    'Value': np.random.randn(100)
})

print(ts_df)
         Date     Value
0  2020-01-01  2.032894
1  2020-01-02 -1.208483
2  2020-01-03 -0.532763
3  2020-01-04  2.169684
4  2020-01-05  0.580246
..        ...       ...
95 2020-04-05  0.254223
96 2020-04-06  0.461171
97 2020-04-07  0.282761
98 2020-04-08  0.091264
99 2020-04-09  0.464295

[100 rows x 2 columns]

时间序列操作

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 创建一个日期范围
dates = pd.date_range('2020-01-01', periods=100)

# 创建一个时间序列 DataFrame,并将日期设置为索引
ts_df = pd.DataFrame({
    'Value': np.random.randn(100)
}, index=dates)

# 确保 'Value' 列是数值类型
ts_df['Value'] = ts_df['Value'].astype(float)

# 时间序列频率转换
ts_df_quarterly = ts_df.resample('Q').mean()  # 转换为季度数据
ts_df_monthly = ts_df.resample('M').sum()  # 转换为月度数据

# 移动平均
ma_20 = ts_df['Value'].rolling(window=20).mean()

# 绘制时间序列图
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(ts_df.index, ts_df['Value'], label='Original Data')
plt.legend()

plt.subplot(2, 1, 2)
plt.plot(ma_20.index, ma_20, label='Moving Average (20 days)', color='red')
plt.legend()
plt.show()



练习题

  1. 使用 Pandas 创建一个包含日期和温度的 DataFrame,并将其转换为时间序列对象。
  2. 如何使用 Pandas 进行日期和时间的格式化和解析

相关推荐

压缩文件查看器(压缩文件查看器密码是多少)

1,打开手机上面的文件管理器,找到要压缩的WPS文件。2,长按一下WPS文件,然后选择要压缩的文件。3,点击右下角的【更多】,选择【压缩】。4,对压缩文件进行保存,压缩完成。扩展资料:wps产品特点1...

键盘哪个是截图键(键盘中的截图键是哪一个)

1、按Prtsc键截图这样获取的是整个电脑屏幕的内容,按Prtsc键后,可以直接打开画图工具,接粘贴使用。也可以粘贴在QQ聊天框或者Word文档中,之后再选择保存即可。2、按Ctrl+Prtsc键截图...

flash插件电脑版下载(flash插件下载安装)

可以不安装,不安装对电脑也不会有什么影响。友情提示,最好安装,这个也不会占用你多少内存,它是用来播放网页中的flash文件的。如果你不安装,网页中的flash动画就不能正常播放。浏览器也会提示你安装!...

如何打开注册表管理器(如何打开注册表管理器权限)
  • 如何打开注册表管理器(如何打开注册表管理器权限)
  • 如何打开注册表管理器(如何打开注册表管理器权限)
  • 如何打开注册表管理器(如何打开注册表管理器权限)
  • 如何打开注册表管理器(如何打开注册表管理器权限)
foxmail邮箱怎么设置(foxmail邮箱设置成功后点完成没反应)

操作步骤/方法1.打开新建界面:2.打开foxmail,在上方导航栏处找到“邮箱(B)”点开此功能,会看到一个下拉菜单,在下拉菜单中找到“新建邮箱账户(N)”。3.建立账户信息:4.点击“新建邮箱账...

电脑自动关机解决办法(电脑自动关机,原来是这里出了问题)

电脑自动关机的原因一、系统文件损坏一个完整的系统受到袭击之后,电脑就不能进行初始化,从而引起自动关机,这也是一个常见的原因。可以选择重装系统的方法来解决问题。电脑自动关机的原因二、CPU太热这是电脑自...

m2固态硬盘安装系统教程(m2固态如何装系统)

加装m.2固态硬盘后,重装系统的操作步骤如下:1、下载U盘启动盘制作工具,下载一个GHOST版最新的WIN7,准备一个足够大的U盘(16G足够了),用U盘启动盘制作工具将其制作成启动U盘;2、插入新电...

运行chkdsk工具(运行chkdsk工具怎么解决)

1、win+R键打开运行,输入cmd。2、输入并回车执行chkdsk/?命令,可以了解chkdsk命令的使用方法。3、比如一些常用的命令,输入并按回车执行chkdskm:/f命令,可以检...

办公软件2007官方下载免费完整版

office字体都变成了英文是因为设置了英文模式。具体的解决步骤如下:我们需要准备的材料分别是:电脑、Word文档。1、首先我们打开Word文档,点击打开左上角的文件中的“选项”。2、然后我们在弹出来...

手机u盘有必要买吗(手机u盘需要什么软件)

网上卖的手机U盘大都是各地的实体数码店进行发货和销售的。他们采用的U盘质量和工厂生产的质量是一致的。并没有什么区别对待。而且由于网上销售费用比较低,所以他在售卖比实体数码店售卖的价格更低,所以这种手机...

电脑系统怎么下载到u盘中(电脑系统win7纯净版下载官方免费版最新版)

下载电脑系统,可以到电脑系统资源下载网站,找到下载页面的下载点,右击下载点,选择迅雷下载,可以把系统文件下载到硬盘里,然后插上U盘,将下载好的系统文件复制到U盘。另一种方法是,将迅雷软件的默认下载路径...

小米主题安装器(红米主题商店app下载安装)

很抱歉,一加九手机无法直接安装小米主题。因为一加九和小米手机使用的是不同的操作系统和主题引擎,它们之间不兼容。一加九使用的是基于Android的OxygenOS操作系统,而小米手机使用的是基于Andr...

hp电脑恢复出厂系统(hp电脑恢复出厂系统操作)

  在开始菜单的【设置】中找到【重置此电脑】的选项即可开始重置恢复到出厂设置;如果您需要整个硬盘格式化,可以选择其中的【删除所有文件】的选项,等待系统设置完成之后会重新进入新系统设置。以下是详细介绍:...

ghost做c盘镜像的步骤(ghost制作镜像步骤)

共9个步骤:1、一般GHOST工具是在PE启动后使用,这个就是PE中GHOST所在路径,找到这个软件并运行。2、界面是英文版本的,因为软件的易操作易学习性,所以这个软件基本没有中文版版本,然后在弹出的...

win10家庭版怎么激活系统(win10家庭版激活步骤)

win10家庭中文版怎么激活1.在win10系统桌面上,点击左下角的开始按钮选择设置选项进入。2.进入设置列表菜单,点击更新和安全选项进入。3.点击激活选项继续下一步操作。4.在弹出输入产品密钥的对话...