最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
pandas中Series与DataFrame的常用属性及方法
时间:2026-07-22 09:10:50 编辑:袖梨 来源:一聚教程网
一:Series
1.常用属性
| loc | 根据行索引获取某行数据,这个是属于:DF的对象 |
| iloc | 根据行号获取某行数据,这个是属于:DF的对象 |
| dtype | 获取series的元素类型 |
| T | 转置 |
| shape | 获取series的维度 |
| size | 获取series的元素个数 |
| values | 获取series的元素值 |
| index | 获取series的索引,功能类似于keys() |
| name | 获取series的名称 |
2.创造方式
1.通过对象来创建
arr = np.array([1,2,3,4,5]) s1 = pd.Series(arr)
2.直接传入
s = pd.Series([1,2,3,4,5])
3.index索引传入
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(n)/tail(n) | 获取前 n 行 / 后 n 行数据(默认 5 行) |
| unique() | 返回唯一值数组 |
| nunique() | 返回唯一值的数量 |
| value_counts() | 计算值的出现频率 |
| isnull()/notnull() | 检测缺失值 |
| fillna(value) | 填充缺失值 |
| dropna() | 删除缺失值 |
| astype(dtype) | 转换数据类型 |
| apply(func) | 对每个元素应用函数 |
| sort_values()/sort_index() | 按值 / 索引排序 |
二:DataFrame
1.常用属性
| values | 返回 DataFrame 的底层数据(二维 NumPy 数组) |
| columns | 返回列标签 |
| index | 返回行索引 |
| dtypes | 返回各列的数据类型 |
| shape | 返回 DataFrame 的形状(行数,列数) |
| 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 合并 |
| 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) # 删除行
四:导入导出数据
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)
五:扩展
1.inplace参数:许多修改方法都有inplace参数,设为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.处理大型数据集:导入大型 CSV 时,可使用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()提高迭代效率。
相关文章
- 窃贼地精联机卡了怎么办?窃贼地精联机失败最新解决方法 07-27
- 万达影城app能改签吗 操作方法介绍 07-27
- 逆战未来雷霆之影 逆战未来雷霆之影最强搭配与实战技巧指南 07-27
- 逆战未来昆仑神宫 逆战未来昆仑神宫玩法解析与实战技巧 07-27
- 逆战未来竞技模式 逆战未来竞技模式玩法详解与上分技巧 07-27
- 逆战未来伯特的审判 逆战未来伯特的审判玩法解析与实战评测 07-27