DataFrame的基本操作

news/2024/12/26 13:28:35/文章来源:https://www.cnblogs.com/HaibaraYuki/p/18632555

在Python中,使用pandas库操作DataFrame是非常常见的,pandas提供了丰富的函数和方法来处理表格数据。下面是一些常见的DataFrame操作示例:

1. 创建 DataFrame

import pandas as pd# 从字典创建 DataFrame
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],'Age': [25, 30, 35, 40],'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)print(df)

2. 查看 DataFrame 基本信息

# 查看前几行
print(df.head())  # 默认查看前5行,可以传参数指定查看的行数# 查看后几行
print(df.tail())  # 默认查看后5行# 查看 DataFrame 的维度 (行数和列数)
print(df.shape)# 查看列名
print(df.columns)# 查看数据类型
print(df.dtypes)# 获取描述性统计信息
print(df.describe())# 获取特定列的数据
print(df['Name'])

3. 访问和选择数据

选择单列

# 选择某一列
names = df['Name']

选择多列

# 选择多列
subset = df[['Name', 'Age']]

选择特定行(基于索引)

# 通过行索引选择单行
row_0 = df.iloc[0]  # 选择第0行# 通过行标签选择单行
row_0_by_label = df.loc[0]  # 如果行有标签,使用loc根据标签获取

选择多行(基于索引)

# 选择多个连续的行
rows = df.iloc[0:3]  # 选择第0行到第2行# 选择多个不连续的行
rows = df.iloc[[0, 2, 3]]  # 选择第0、2、3行

条件筛选

# 条件筛选:选择 Age 大于 30 的行
filtered = df[df['Age'] > 30]

4. 添加、修改和删除列

添加列

# 添加一列
df['Salary'] = [50000, 60000, 70000, 80000]# 或者通过 apply 方法添加列
df['Age_in_10_years'] = df['Age'] + 10

修改列

# 修改某一列的值
df['Age'] = df['Age'] + 1  # 所有人的年龄都加1

删除列

# 删除某一列
df.drop('Salary', axis=1, inplace=True)  # axis=1 表示删除列,axis=0 删除行

5. 排序数据

按列排序

# 按 Age 列升序排序
df_sorted = df.sort_values(by='Age', ascending=True)# 按多个列排序
df_sorted_multiple = df.sort_values(by=['Age', 'Name'], ascending=[True, False])

6. 处理缺失值

检查缺失值

# 检查每一列的缺失值数量
print(df.isnull().sum())# 检查是否存在缺失值
print(df.isnull().values.any())

填充缺失值

# 使用某个常数填充缺失值
df['Age'].fillna(30, inplace=True)# 使用前一个有效值填充缺失值
df['Age'].fillna(method='ffill', inplace=True)

删除缺失值

# 删除含有缺失值的行
df.dropna(inplace=True)# 删除含有缺失值的列
df.dropna(axis=1, inplace=True)

7. 合并 DataFrame

合并(连接)数据

# 行连接 (垂直合并)
df2 = pd.DataFrame({'Name': ['Eve', 'Frank'],'Age': [45, 50],'City': ['San Francisco', 'Dallas']
})
df_combined = pd.concat([df, df2], axis=0, ignore_index=True)# 列连接 (水平合并)
df3 = pd.DataFrame({'Country': ['USA', 'USA', 'USA', 'USA'],'Job': ['Engineer', 'Doctor', 'Artist', 'Teacher']
})
df_combined_columns = pd.concat([df, df3], axis=1)

基于列合并

# 使用 merge 方法合并两个 DataFrame,类似于 SQL 的 JOIN
df_left = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
df_right = pd.DataFrame({'Name': ['Alice', 'Bob'], 'City': ['New York', 'Los Angeles']})df_merged = pd.merge(df_left, df_right, on='Name')

8. 分组操作

按列分组

# 按照 City 列分组并计算每组的平均值
grouped = df.groupby('City').mean()# 按多个列分组
grouped_multiple = df.groupby(['City', 'Age']).mean()

9. 应用函数

对列或行应用函数

# 对列应用函数
df['Age_squared'] = df['Age'].apply(lambda x: x**2)# 对行应用函数
df['Age_and_Salary'] = df.apply(lambda row: row['Age'] + row['Salary'], axis=1)

使用 mapapplymap 操作

# 使用 map 对单列进行映射操作
df['City'] = df['City'].map({'New York': 'NY', 'Los Angeles': 'LA'})# 使用 applymap 对整个 DataFrame 进行操作
df = df.applymap(str)  # 将所有值转换为字符串

10. 保存和读取数据

保存 DataFrame 到文件

# 保存为 CSV 文件
df.to_csv('data.csv', index=False)# 保存为 Excel 文件
df.to_excel('data.xlsx', index=False)

从文件读取 DataFrame

# 从 CSV 文件读取
df = pd.read_csv('data.csv')# 从 Excel 文件读取
df = pd.read_excel('data.xlsx')

11. 其他常用操作

DataFrame 转置

# 转置 DataFrame
df_transposed = df.T

重命名列

# 重命名列
df.rename(columns={'Name': 'Full Name', 'Age': 'Years'}, inplace=True)

这些是pandas常见的DataFrame操作。通过这些操作,你可以高效地清洗、处理和分析数据。如果你有更具体的需求,或者遇到问题,随时告诉我!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/859275.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

龙哥量化:通达信文华技术指标-双均线策略叠加分时均线,量化策略思路详细分析

如果您需要代写技术指标公式, 请联系我。 龙哥QQ:591438821 龙哥微信:Long622889 也可以把您的通达信,文华技术指标改成TB交易开拓者、金字塔、文华8的自动交易量化策略 开始分享一些细致化的思路和写法,我常用的是TB交易开拓者。对量化感兴趣的朋友可以多交流 这篇介绍重…

MDS100-16-ASEMI电机专用整流模块MDS100-16

MDS100-16-ASEMI电机专用整流模块MDS100-16编辑:ll MDS100-16-ASEMI电机专用整流模块MDS100-16 型号:MDS100-16 品牌:ASEMI 封装:M18 正向电流:100A 反向电压:1600V 引脚数量:5 芯片个数:6 芯片尺寸:50MIL 漏电流:>10ua 恢复时间:>2000ns 浪涌电流:920A 芯片…

Nginx使用手册

由于格式和图片解析问题,为了更好的体验可前往 阅读原文Nginx(发音为 "engine-x")是一个高性能、开源的HTTP和反向代理服务器,也可以作为电子邮件(IMAP/POP3)代理服务器、以及通用的TCP/UDP代理服务器。它由俄罗斯的程序员Igor Sysoev创建于2002年,其目的是解…

在线性坐标系中绘制三角函数图象

本文记述了用 Matplotlib 在线性坐标系中绘制三角函数图象的例子。 代码主体内容如下: ...def main():fig, axs = plt.subplots(1, 3, figsize=(14,4.5)) #1axs[0] = configure_axes(axs[0], Trigonometric Function\t\t\t + r$sine$, 2*np.pi, 1, np.pi, np.pi/2…

美团后端暑期一面,本来收到感谢信,但又复活了!

今天来分享的是一位读者的美团暑期实习一面面经,主要是一些常规八股,难度还是有的,部分题目确实不太好回答。这位同学回答的不是很好,本来是收到感谢信了。结果,过几天又收到复活赛邀请,复活赛倒是打赢了,已oc。 1、线程池的参数/*** 用给定的初始参数创建一个新的Threa…

Makefile文件中,两个$的变量变量$$Xxx 与一个$的变量 $Xxx的区别

使用来引用 Makefile 中的变量。使用$$来引用 shell 中的变量,以确保在传递给 shell 时保留单个符号。原文地址:Makefile文件中,两个$的变量变量$$Xxx 与一个$的变量 $Xxx的区别Makefile 中的变量引用 在 Makefile 中,$ 符号用于变量替换,但它的使用方式有一些细微的区别:…

【日记】各位圣诞节快乐呀!(566 字)

正文不知道为什么最近总是做噩梦。昨天晚上梦到我一枪射死鱼儿,然后兄长用一瓶 4 块钱 1L 的冰红茶将我敲死,最后全人类死于小行星撞地球。有一颗小行星刚好降落在我家附近的山上,然后散射出了无数激光,把我家切割成一块一块的。也没塌,不知道哪个巫师用了魔法,把周围的房…

LDA主题模型——Python实现(三)

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } LDA假设每个文档都是多个主题的混合,每个主题又是多个词语的混合。它通过识别文档中的词语分布来推断出文档的主题结构。LDA的一个简单比喻是冰淇淋店:每个…

工具大全-dirsearch探测Web目录

目录扫描工具dirsearch非常详细使用方法dirsearch介绍dirsearch是一款开源的、基于Python开发的命令行工具,主要用于对Web服务器进行目录和文件的扫描,以发现潜在的安全漏洞。 dirsearch下载地址: https://github.com/maurosoria/dirsearch 运行环境:必须安装python3为什么…

Sealos Devbox 基础教程:使用 Cursor 从零开发一个 One API 替代品

随着技术的成熟和 AI 的崛起,很多原本需要团队协作才能完成的工作现在都可以通过自动化和智能化的方式完成。于是乎,单个开发者的能力得到了极大的提升 - 借助各种工具,一个人就可以完成开发、测试、运维等整条链路上的工作,渡劫飞升成为真正的 “全干工程师”。 之前我们分…

【详解】低功耗低成本的Open开发方案

Open开发应用需求,有没有低功耗、低成本方案? 今天我们一起来聊聊Air780EP模组。 一、Air780EP核心信息描述 运营商支持: Air780EP模组面向国内的全网通模组,支持移动、电信、联通三大运营商。 仅比Air700E系列相对大一些: Air700ECQ/Air700EAQ/Air700EMQ; 与Air780E系列…