温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

DataFrame操作方法有哪些

发布时间:2021-12-27 10:34:32 来源:亿速云 阅读:558 作者:iii 栏目:大数据
# DataFrame操作方法有哪些 ## 目录 1. [DataFrame基础概念](#1-dataframe基础概念) 2. [创建DataFrame](#2-创建dataframe) 3. [数据查看与检查](#3-数据查看与检查) 4. [数据选择与过滤](#4-数据选择与过滤) 5. [数据处理与清洗](#5-数据处理与清洗) 6. [数据分组与聚合](#6-数据分组与聚合) 7. [数据合并与连接](#7-数据合并与连接) 8. [时间序列处理](#8-时间序列处理) 9. [性能优化技巧](#9-性能优化技巧) 10. [总结](#10-总结) --- ## 1. DataFrame基础概念 DataFrame是Pandas库中最核心的数据结构,具有以下特点: - 二维表格型数据结构(类似Excel表格) - 行和列都有标签索引 - 列可以是不同的数据类型 - 大小可变(可动态增删行列) - 提供大量数据操作方法 ```python import pandas as pd import numpy as np 

2. 创建DataFrame

2.1 从字典创建

data = { 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['NY', 'LA', 'Chicago'] } df = pd.DataFrame(data) 

2.2 从列表创建

data = [ ['Alice', 25, 'NY'], ['Bob', 30, 'LA'], ['Charlie', 35, 'Chicago'] ] df = pd.DataFrame(data, columns=['Name', 'Age', 'City']) 

2.3 从Numpy数组创建

arr = np.random.rand(5, 3) df = pd.DataFrame(arr, columns=['A', 'B', 'C']) 

2.4 从文件读取

# CSV文件 df = pd.read_csv('data.csv') # Excel文件 df = pd.read_excel('data.xlsx') # JSON文件 df = pd.read_json('data.json') 

3. 数据查看与检查

3.1 查看数据

df.head() # 查看前5行 df.tail(3) # 查看后3行 df.sample(2) # 随机查看2行 

3.2 基本信息

df.shape # 行列数 df.info() # 数据类型和内存使用 df.describe() # 数值列统计信息 

3.3 索引操作

df.index # 查看行索引 df.columns # 查看列名 df.reset_index() # 重置索引 df.set_index('Name') # 设置新索引 

4. 数据选择与过滤

4.1 列选择

df['Name'] # 选择单列 df[['Name', 'Age']] # 选择多列 df.Name # 点号选择(不推荐) 

4.2 行选择

df.loc[0] # 按标签选择 df.iloc[0] # 按位置选择 df[0:2] # 切片选择 

4.3 条件过滤

df[df['Age'] > 30] # 简单条件 df[(df['Age'] > 25) & (df['City'] == 'NY')] # 多条件 df.query('Age > 25 and City == "NY"') # 使用query方法 

4.4 高级选择

df.loc[df['Age'] > 30, ['Name', 'City']] # 行列同时筛选 df.iloc[1:3, 0:2] # 位置索引 df.at[0, 'Name'] # 快速访问标量 

5. 数据处理与清洗

5.1 缺失值处理

df.isnull() # 检测缺失值 df.dropna() # 删除缺失值 df.fillna(0) # 填充缺失值 df.interpolate() # 插值填充 

5.2 重复值处理

df.duplicated() # 检测重复行 df.drop_duplicates() # 删除重复行 

5.3 数据类型转换

df['Age'] = df['Age'].astype('float') # 类型转换 pd.to_numeric(df['Age']) # 转换为数值 pd.to_datetime(df['Date']) # 转换为日期 

5.4 列操作

df['New'] = df['A'] + df['B'] # 新增列 df.drop('New', axis=1) # 删除列 df.rename(columns={'Old': 'New'}) # 重命名列 

5.5 值替换

df.replace({'NY': 'New York'}) # 字典替换 df['Age'].replace(25, 26) # 值替换 df['City'].str.replace('NY', 'New York') # 字符串替换 

6. 数据分组与聚合

6.1 基本分组

grouped = df.groupby('City') # 单列分组 grouped = df.groupby(['City', 'Age']) # 多列分组 

6.2 聚合函数

grouped.mean() # 平均值 grouped.sum() # 求和 grouped.size() # 计数 grouped.agg(['mean', 'sum', 'count']) # 多重聚合 

6.3 自定义聚合

def my_func(x): return x.max() - x.min() grouped.agg(my_func) # 自定义函数 

6.4 透视表

pd.pivot_table(df, values='Age', index='City', columns='Gender', aggfunc='mean') 

7. 数据合并与连接

7.1 纵向合并

pd.concat([df1, df2]) # 简单合并 pd.concat([df1, df2], ignore_index=True) # 重置索引 

7.2 横向合并

pd.merge(df1, df2, on='key') # 单键合并 pd.merge(df1, df2, left_on='lkey', right_on='rkey') # 多键合并 

7.3 连接方式

pd.merge(df1, df2, how='inner') # 内连接 pd.merge(df1, df2, how='left') # 左连接 pd.merge(df1, df2, how='outer') # 全连接 

7.4 索引合并

df1.join(df2, how='left') # 索引连接 

8. 时间序列处理

8.1 时间转换

df['date'] = pd.to_datetime(df['date']) df.set_index('date', inplace=True) 

8.2 时间索引

df.loc['2023-01'] # 按月选择 df.loc['2023-01-01':'2023-01-31'] # 按范围选择 

8.3 重采样

df.resample('M').mean() # 按月重采样 df.resample('D').ffill() # 向前填充 

8.4 滑动窗口

df.rolling(window=7).mean() # 7天移动平均 df.expanding().mean() # 扩展窗口 

9. 性能优化技巧

9.1 向量化操作

# 避免循环,使用向量化 df['new'] = df['A'] * df['B'] + df['C'] 

9.2 使用高效数据类型

df['col'] = df['col'].astype('category') # 分类数据 

9.3 分块处理大数据

chunksize = 10000 for chunk in pd.read_csv('large.csv', chunksize=chunksize): process(chunk) 

9.4 使用eval方法

df.eval('A + B - C', inplace=True) # 表达式求值 

10. 总结

本文全面介绍了DataFrame的各类操作方法,包括: 1. 多种创建DataFrame的方式 2. 数据查看和基本信息获取 3. 灵活的数据选择和过滤技巧 4. 完整的数据清洗流程 5. 强大的分组聚合功能 6. 多种数据合并方法 7. 专业的时间序列处理 8. 实用的性能优化技巧

掌握这些方法后,您将能够高效地处理各种结构化数据任务。建议在实际项目中多加练习,结合具体需求灵活运用这些技术。

# 最后示例:完整数据处理流程 df = pd.read_csv('data.csv') df = df.dropna() df['date'] = pd.to_datetime(df['date']) df = df[df['value'] > 0] result = df.groupby('category')['value'].mean() result.to_csv('result.csv') 

提示:Pandas官方文档是深入学习的最佳资源,遇到问题时可以使用help(pd.DataFrame.method)查看详细说明。 “`

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI