游乐游手机版
首页/编程语言/文章详情

Python数据分析 pandas中Series与DataFrame的常用属性及方法完整教程

时间:2026-07-21 22:30
Pandas中Series与DataFrame常用属性包括形状、大小、数值、索引、列名;常用方法有头部、尾部、唯一值、值计数、填充缺失值、删除缺失值、排序、分组、合并;数据更改通过索引赋值、添加删除行列实现;导入导出支持CSV、Excel、JSON等格式,是数据分析常用操作。

一、Series——pandas 核心数据结构

先从 pandas 中最基础的 Series 说起,它是整个库的基石,很多操作思路与 DataFrame 是相通的,掌握 Series 对后续学习至关重要。

1. 常用属性

下面列出几个你日常一定会用到的属性,建议先熟悉它们:

loc根据行索引标签获取指定行数据,属于 DataFrame 对象的索引方法
iloc根据行位置(整数序号)获取某行数据,同样属于 DataFrame 对象
dtype返回 Series 中元素的数据类型(如 int64、float64 等)
T返回转置结果(对一维 Series 效果有限,但 DataFrame 中常用)
shape返回 Series 的维度信息,即行数(因为是一维结构)
size返回 Series 中元素的总个数
values以 NumPy 数组形式返回底层数值
index返回索引对象,功能类似于字典的 keys() 方法
name返回 Series 的名称属性(创建时指定)

2. 创建方式

创建 Series 有多种常用方法,最常用的包括以下几种:

1. 通过 NumPy 数组创建

arr = np.array([1,2,3,4,5])
s1 = pd.Series(arr)

2. 直接传入列表

s = pd.Series([1,2,3,4,5])

3. 指定自定义索引

s3 = pd.Series([1,2,3,4,5], index=['a','b','c','d','e'])

4. 通过元组传入

s4 = pd.Series((1,3,5),index=['a','b','c'])

5. 通过字典传入

s5 = pd.Series({'a':1,'b':2,'c':3})

3. 常用方法

这些方法几乎每天都会用到,特别是 head() / tail()value_counts()

head(n) / tail(n)获取前 n 行 / 后 n 行数据(默认 5 行)
unique()返回去重后的唯一值数组
nunique()返回唯一值的数量
value_counts()计算每个值的出现频率
isnull() / notnull()检测缺失值(返回布尔 Series)
fillna(value)用指定值填充缺失值
dropna()删除含有缺失值的元素
astype(dtype)转换 Series 的数据类型
apply(func)对每个元素依次应用自定义函数
sort_values() / sort_index()按值或索引进行排序

二、DataFrame——表格数据处理核心

DataFrame 是 pandas 的“主将”,表格数据基本都靠它操作。下面列出最常用的属性和方法:

1. 常用属性

values返回底层二维数组(NumPy 数组)
columns返回列标签(列名)
index返回行索引
dtypes返回各列的数据类型
shape返回形状(行数,列数)
size返回元素总数(行数 × 列数)
T返回转置后的 DataFrame

2. 常用方法

head(n) / tail(n)查看前 n 行 / 后 n 行数据
info()查看基本信息(非空值数量、数据类型等)
describe()生成描述性统计(计数、均值、标准差等)
drop(columns, axis=1)删除指定列
drop(index, axis=0)删除指定行
fillna(value)填充缺失值
dropna()删除含有缺失值的行或列
groupby(by)按指定列分组
merge(other)与另一个 DataFrame 合并(类似 SQL 的 JOIN)
pivot_table()创建透视表
sort_values(by)按指定列排序
sort_index()按索引排序
apply(func, axis)沿指定轴应用函数
applymap(func)对每个元素应用函数(已过时,推荐改用 mapapply
corr()计算列与列之间的相关系数

三、修改 Series 和 DataFrame 的方法

数据不是一成不变的,学会增删改是基本功。下面分两部分讲解。

1. 修改 Series

根据索引直接赋值

s = pd.Series([1,2,3], index=['a','b','c'])
s['b'] = 10  # 修改单个值
s[['a','c']] = [20, 30]  # 修改多个值

添加元素

s['d'] = 40  # 添加单个元素
s = s.append(pd.Series([50], index=['e']))  # 添加多个元素(注意:append 在新版本中已过时)

删除元素

s = s.drop('e')  # 删除指定索引的元素

2. 修改 DataFrame

添加列

s = s.drop('e')  # 删除指定索引的元素

修改列名

df.rename(columns={'old_name': 'new_name'}, inplace=True)
df.columns = ['col1', 'col2', 'col3']  # 批量修改

修改值

df.loc[0, 'col1'] = 100  # 通过标签修改
df.iloc[1, 2] = 200  # 通过位置修改

添加行

new_row = pd.DataFrame([[1,2,3]], columns=df.columns)
df = pd.concat([df, new_row], ignore_index=True)  # 使用 concat 添加行

删除行列

df.drop(columns=['col1'], inplace=True)  # 删除列
df.drop(index=[0,1], inplace=True)  # 删除行

四、数据导入与导出

与外部文件打交道是日常工作中最常见的场景,pandas 为数据读写提供了非常全面的支持。

1. 导入数据

从 CSV 文件导入

df = pd.read_csv('file.csv')  # 基本用法
df = pd.read_csv('file.csv', sep=';', header=0, index_col=0)  # 自定义分隔符、表头、索引列

从 Excel 文件导入

df = pd.read_excel('file.xlsx')  # 读取第一个工作表
df = pd.read_excel('file.xlsx', sheet_name='Sheet2')  # 指定工作表

从数据库导入

import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql_query('SELECT * FROM table', conn)

从 JSON 导入

df = pd.read_json('file.json')

2. 导出数据

导出为 CSV

df.to_csv('output.csv', index=False)  # index=False 表示不导出索引

导出为 Excel

df.to_excel('output.xlsx', sheet_name='Data', index=False)

导出为 JSON

df.to_json('output.json', orient='records')

导出到数据库

df.to_sql('table_name', conn, if_exists='replace', index=False)

五、实用扩展技巧

最后补充几个实战中经常遇到的细节,帮助你更高效地使用 pandas。

1. inplace 参数:很多修改方法(如 drop()fillna())都包含这个参数,设为 True 时直接修改原对象,不返回新对象;默认 False,返回修改后的副本。建议新手先用默认值,避免不小心误改原始数据。

pandas中Series与DataFrame的常用属性及方法

2. 链式操作:pandas 支持链式调用,写起来非常简洁:

df = pd.read_csv('data.csv').dropna().rename(columns=str.lower).sort_values('date')

3. 数据类型转换:使用 astype() 时要注意兼容性,例如字符串不能直接转为整数。可以先尝试 pd.to_numeric()

df['col'] = pd.to_numeric(df['col'], errors='coerce')  # 无法转换的值变为 NaN

4. 大型数据集处理:读取大文件时使用 chunksize 分块读取,避免内存溢出:

for chunk in pd.read_csv('large_file.csv', chunksize=1000):
    process(chunk)

5. 缺失值处理:除了 fillna()dropna()interpolate() 插值法在时间序列数据中特别实用。

6. 迭代效率:尽量避免用 for 循环遍历 DataFrame,优先使用 apply()map() 等向量化操作;如果必须逐行遍历,用 itertuples() 会比 iterrows() 快很多。

来源:https://www.jb51.net/python/367778hra.htm
上一篇Node.js应用在Linux上的数据备份与恢复实现 下一篇Debian JS日志对系统安全性的帮助解析
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Overlay网络如何实现高可用方案与关键技术解析
编程语言 · 2026-07-25

Overlay网络如何实现高可用方案与关键技术解析

Overlay网络高可用需从架构冗余、控制平面故障转移、数据平面多路径传输、运维自动化及应用层容错等多层面协同实现,同时结合快速故障检测与流量切换,确保网络稳定与业务连续。

Ubuntu系统Node.js日志输出配置方法
编程语言 · 2026-07-25

Ubuntu系统Node.js日志输出配置方法

在Ubuntu中配置Node js日志,从console log入门,用winston实现多通道(控制台、文件),morgan记录HTTP请求,通过winston-daily-rotate-file实现按小时轮转、压缩和保留天数,确保生产环境日志管理高效可靠。

Ubuntu下实时监控Node.js日志的实用方法
编程语言 · 2026-07-25

Ubuntu下实时监控Node.js日志的实用方法

在Ubuntu环境下,可通过tail-f命令实时追踪Node js日志,或使用watch定期刷新并配合grep过滤。第三方工具如Loggly、Datadog提供集中监控与告警,集成winston等日志库可增强管理。选择方法取决于团队规模与运维复杂度。

如何高效优化Ubuntu中Node.js日志性能的实用方法与技巧
编程语言 · 2026-07-25

如何高效优化Ubuntu中Node.js日志性能的实用方法与技巧

Ubuntu环境下Node js日志性能优化需从八个方向入手:选择高性能日志库(如Pino)、合理配置日志级别、启用异步日志记录、使用结构化JSON格式、实施日志轮转与分割、批量写入缓冲、集中式日志管理及优化存储介质(如SSD),以降低I O压力,提升应用响应速度。

Ubuntu Node.js日志错误查看与排查方法
编程语言 · 2026-07-25

Ubuntu Node.js日志错误查看与排查方法

在Ubuntu环境下,Node js日志错误可通过系统日志(如 var log syslog,配合grep和journalctl筛选)、应用自身日志文件(使用cat、less、tail及grep筛选)或进程管理工具pm2(pm2logs)查看。常见错误包括端口占用、模块缺失和语法错误,需根据日志定位并快速解决,可高效定位错误。