首页 > 编程语言 >Pandas Series与DataFrame常用属性及方法

Pandas Series与DataFrame常用属性及方法

来源:互联网 2026-07-22 08:07:16

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

一:pandas Series基础操作详解

先从pandas最基础的Series说起,它是数据分析的基石,很多操作思路和DataFrame是相通的。掌握Series的常用属性和方法,是学习pandas的第一步。

1.Series常用属性

以下是pandas Series中你平时一定会用到的属性,建议先熟悉它们:

长期稳定更新的攒劲资源: >>>点此立即查看<<<

loc根据行索引获取某行数据,属于DataFrame对象的方法
iloc根据行号获取某行数据,同样属于DataFrame对象
dtype返回Series的元素类型
T转置
shape返回Series的维度(即行数,因为是一维)
size返回元素个数
values返回底层数值数组
index返回索引对象,功能类似keys()
name返回Series的名称

2.Series创建方式

pandas创建Series有多种方式,最常用的就是下面这几种:

1.通过NumPy数组创建Series

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

2.直接传入列表创建Series

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

3.指定索引创建Series

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

4.通过元组创建Series

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

5.通过字典创建Series

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

3.Series常用方法

这些pandas Series方法几乎天天打交道,特别是head()/tail()value_counts()

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

二:pandas DataFrame核心操作指南

DataFrame是pandas的"正主",表格数据基本都靠它处理。下面列出pandas DataFrame最常用的属性和方法:

1.DataFrame常用属性

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

2.DataFrame常用方法

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

三:pandas Series和DataFrame数据修改方法

数据不是一成不变的,学会用pandas增删改是基本功。下面分两部分说明。

1.修改Series数据

根据索引直接赋值

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

添加元素到Series

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

删除Series元素

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

2.修改DataFrame数据

添加列到DataFrame

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

修改DataFrame列名

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

修改DataFrame值

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

添加行到DataFrame

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

删除DataFrame行列

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

四:pandas数据导入导出实战

和外部文件打交道是数据分析的日常,pandas的导入导出支持非常全面。

1.pandas导入数据

从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.pandas导出数据

导出为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实战进阶技巧

最后再补充几个pandas实战中经常遇到的细节问题。

1.inplace参数:pandas很多修改方法(如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.大型数据集处理:pandas读取大文件时用chunksize分块,避免内存爆炸:

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

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

6.迭代效率:pandas中尽量避免用for循环遍历DataFrame,优先用apply()map()等向量化操作,实在需要逐行遍历时,用itertuples()会比iterrows()快不少。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。