Python数据分析 pandas中Series与DataFrame的常用属性及方法完整教程
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) | 对每个元素应用函数(已过时,推荐改用 map 或 apply) |
| 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,返回修改后的副本。建议新手先用默认值,避免不小心误改原始数据。

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() 快很多。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
FileZilla断点续传设置与操作指南
FileZilla支持断点续传,需客户端与服务器均开启REST命令。设置中确保启用断点续传及继续传输选项。中断后自动或手动从断点恢复。注意服务器支持、传输模式匹配及文件完整性校验。
Debian系统C++编译器位置查找方法
在Debian系统中,通过apt安装的C++编译器g++默认位于 usr bin g++,可使用which或whereis命令验证路径。g++属于build-essential软件包,若未安装则需执行sudoaptinstallbuild-essential。该包还包含gcc、make等编译工具链,g++是GNUC++编译器,实际是符号链接指向具体版本,验证
Debian系统安装C++环境的方法
在Debian系统安装C++开发环境:先sudoaptupdate更新包列表,再sudoaptinstallbuild-essential安装编译工具链,或单独安装g++。用g++--version验证。可选安装VSCode、GDB、CMake等工具并配置默认编译器版本。
Debian系统C++开发环境配置指南
在Debian系统中,先执行aptupdate更新软件包列表,再安装build-essential元包即可获得GCC、G++、Make和GDB。通过运行g++--version命令验证编译器安装成功。可选安装VisualStudioCode、CLion等编辑器及CMake构建工具,并编写一个简单的HelloWorld程序,使用g++编译运行以验证环境配置正确
通过cpustat工具查看CPU状态的具体方法与详细步骤
cpustat是sysstat包中的CPU监控工具,可按固定间隔输出带时间戳的CPU使用率统计。安装后运行cpustat即可实时显示各核心信息,常用指标包括%usr、%sys、%iowait、%steal和%idle,用于定位用户态、内核态或I O瓶颈。高级选项-c可显示单核统计,-m可同时查看内存使用,适合脚本采集和性能分析。
- 热门数据榜
相关攻略
2026-07-25 22:29
2026-07-25 22:29
2026-07-25 22:29
2026-07-25 22:29
2026-07-25 22:18
2026-07-25 22:18
2026-07-25 22:18
2026-07-25 22:18
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

