当前位置:首页 > 技术 > 正文内容

Pandas基础操作:Series与DataFrame的创建、查看、排序及选取

访客 技术 2026年6月15日 1

1. 创建Series和DataFrame

import numpy as np
import pandas as pd
data_series = pd.Series([2, 4, np.nan, 6, 8])
date_range = pd.date_range('20000101', periods=5)
data_frame = pd.DataFrame(np.random.randn(5, 3), index=date_range, columns=['X', 'Y', 'Z'])
# 使用np.random.randn生成随机数,构建一个5行3列的数据框。

data_frame_custom = pd.DataFrame({
  'Col1': [10, 20, 30, 40],
  'Col2': pd.Timestamp('20230101'),
  'Col3': pd.Series([5] * 4, dtype='float64'),
  'Col4': np.array([7] * 4, dtype='int32'),
  'Col5': pd.Categorical(['red', 'green', 'blue', 'yellow']),
  'Col6': 'sample'
})

2. 查看与排序

print(data_frame_custom.dtypes) # 查看每列的数据类型。
print(data_frame_custom.dtypes.value_counts()) # 统计各数据类型的数量。

print(data_frame_custom.head(3)) # 显示前3行。
print(data_frame_custom.tail(3)) # 显示后3行。

print(data_frame_custom.index) # 获取行索引。
print(data_frame_custom.columns) # 获取列索引。
print(data_frame_custom.values) # 返回所有值的数组形式。

print(data_frame_custom.describe()) # 描述数值型数据的统计信息。
print(data_frame_custom.T) # 转置数据框。

# 排序操作:
sorted_df = data_frame.sort_index(axis=0, ascending=False) # 按行索引降序排列。
sorted_columns = data_frame.sort_index(axis=1, ascending=True) # 按列索引升序排列。
sorted_values = data_frame.sort_values(by='X') # 按指定列(如'X')进行排序。

3. 元素选取

3.1 使用方括号[]

print(data_frame[0:2]) # 切片访问行。
print(data_frame['20000101':'20000102']) # 根据日期索引切片。
print(data_frame['X']) # 访问单列。
print(data_frame[['X', 'Y']]) # 同时访问多列。

3.2 loc方法

print(data_frame.loc[date_range[0]]) # 按标签访问某一行。
print(data_frame.loc[:, ['X', 'Y']]) # 访问指定列。
print(data_frame.loc['20000101':'20000103', ['X', 'Y']]) # 结合日期范围与列名。
print(data_frame.loc[date_range[0], 'X']) # 单元格定位。
print(data_frame.at[date_range[0], 'X']) # 快速访问单元格。

3.3 iloc方法

print(data_frame.iloc[1]) # 按位置访问某一行。
print(data_frame.iloc[1:3, 0:2]) # 切片访问行列。
print(data_frame.iloc[[0, 2], [0, 2]]) # 定位特定行列。
print(data_frame.iloc[1:3, :]) # 切片行并选择所有列。
print(data_frame.iat[1, 1]) # 快速访问单个元素。

3.4 条件选取

filtered_df = data_frame[data_frame['X'] > 0] # 筛选满足条件的行。
filtered_all = data_frame[data_frame > 0] # 对整个数据框应用条件。

copy_df = data_frame.copy()
copy_df['Category'] = ['A', 'B', 'C', 'D', 'E'] # 添加新列。
print(copy_df[copy_df['Category'].isin(['A', 'C'])]) # 筛选指定类别的行。

# 使用query方法筛选:
result = copy_df.query("X >= 1") # 筛选列X大于等于1的所有行。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。