Python学习笔记第五十八天(Pandas 常用函数)

news/2024/11/17 5:32:32/

Python学习笔记第五十八天

  • Pandas 常用函数
    • 读取数据
    • 查看数据
    • 数据清洗
    • 数据选择和切片
    • 数据排序
    • 数据合并
    • 数据选择和过滤
    • 数据统计和描述
  • 后记

Pandas 常用函数

以下列出了 Pandas 常用的一些函数及使用实例:

读取数据

函数说明
pd.read_csv(filename)读取 CSV 文件;
pd.read_excel(filename)读取 Excel 文件;
pd.read_sql(query, connection_object)从 SQL 数据库读取数据;
pd.read_json(json_string)从 JSON 字符串中读取数据;
pd.read_html(url)从 HTML 页面中读取数据。

接下来演示一下每个函数的用法

# 实例 1
import pandas as pd# 从 CSV 文件中读取数据
df = pd.read_csv('data.csv')# 从 Excel 文件中读取数据
df = pd.read_excel('data.xlsx')# 从 SQL 数据库中读取数据
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table_name', conn)# 从 JSON 字符串中读取数据
json_string = '{"name": "John", "age": 30, "city": "New York"}'
df = pd.read_json(json_string)# 从 HTML 页面中读取数据
url = 'https://www.runoob.com'
dfs = pd.read_html(url)
df = dfs[0] # 选择第一个数据框

查看数据

函数说明
df.head(n)显示前 n 行数据;
df.tail(n)显示后 n 行数据;
df.info()显示数据的信息,包括列名、数据类型、缺失值等;
df.describe()显示数据的基本统计信息,包括均值、方差、最大值、最小值等;
df.shape显示数据的行数和列数。

接下来演示一下每个函数的用法

# 实例 2
# 显示前五行数据
df.head()# 显示后五行数据
df.tail()# 显示数据信息
df.info()# 显示基本统计信息
df.describe()# 显示数据的行数和列数
df.shape
# 实例 3
import pandas as pddata = [{"name": "Google", "likes": 25, "url": "https://www.google.com"},{"name": "Runoob", "likes": 30, "url": "https://www.runoob.com"},{"name": "Taobao", "likes": 35, "url": "https://www.taobao.com"}
]df = pd.DataFrame(data)
# 显示前两行数据
print(df.head(2))
# 显示前最后一行数据
print(df.tail(1))

数据清洗

函数说明
df.dropna()删除包含缺失值的行或列;
df.fillna(value)将缺失值替换为指定的值;
df.replace(old_value, new_value)将指定值替换为新值;
df.duplicated()检查是否有重复的数据;
df.drop_duplicates()删除重复的数据。

接下来演示一下每个函数的用法

# 实例 4
# 删除包含缺失值的行或列
df.dropna()# 将缺失值替换为指定的值
df.fillna(0)# 将指定值替换为新值
df.replace('old_value', 'new_value')# 检查是否有重复的数据
df.duplicated()# 删除重复的数据
df.drop_duplicates()

数据选择和切片

函数说明
df[column_name]选择指定的列;
df.loc[row_index, column_name]通过标签选择数据;
df.iloc[row_index, column_index]通过位置选择数据;
df.ix[row_index, column_name]通过标签或位置选择数据;
df.filter(items=[column_name1, column_name2])选择指定的列;
df.filter(regex=‘regex’)选择列名匹配正则表达式的列;
df.sample(n)随机选择 n 行数据。

接下来演示一下每个函数的用法

# 实例 5
# 选择指定的列
df['column_name']# 通过标签选择数据
df.loc[row_index, column_name]# 通过位置选择数据
df.iloc[row_index, column_index]# 通过标签或位置选择数据
df.ix[row_index, column_name]# 选择指定的列
df.filter(items=['column_name1', 'column_name2'])# 选择列名匹配正则表达式的列
df.filter(regex='regex')# 随机选择 n 行数据
df.sample(n=5)

数据排序

函数说明
df.sort_values(column_name)按照指定列的值排序;
df.sort_values([column_name1, column_name2], ascending=[True, False])按照多个列的值排序;
df.sort_index()按照索引排序。

接下来演示一下每个函数的用法

# 实例 6
# 按照指定列的值排序
df.sort_values('column_name')# 按照多个列的值排序
df.sort_values(['column_name1', 'column_name2'], ascending=[True, False])# 按照索引排序
df.sort_index()
数据分组和聚合
函数	说明
df.groupby(column_name)	按照指定列进行分组;
df.aggregate(function_name)	对分组后的数据进行聚合操作;
df.pivot_table(values, index, columns, aggfunc)	生成透视表。
# 实例 7
# 按照指定列进行分组
df.groupby('column_name')# 对分组后的数据进行聚合操作
df.aggregate('function_name')# 生成透视表
df.pivot_table(values='value', index='index_column', columns='column_name', aggfunc='function_name')

数据合并

函数说明
pd.concat([df1, df2])将多个数据框按照行或列进行合并;
pd.merge(df1, df2, on=column_name)按照指定列将两个数据框进行合并。

接下来演示一下每个函数的用法

# 实例 8
# 将多个数据框按照行或列进行合并
df = pd.concat([df1, df2])# 按照指定列将两个数据框进行合并
df = pd.merge(df1, df2, on='column_name')

数据选择和过滤

函数说明
df.loc[row_indexer, column_indexer]按标签选择行和列。
df.iloc[row_indexer, column_indexer]按位置选择行和列。
df[df[‘column_name’] > value]选择列中满足条件的行。
df.query(‘column_name > value’)使用字符串表达式选择列中满足条件的行。

数据统计和描述

函数说明
df.describe()计算基本统计信息,如均值、标准差、最小值、最大值等。
df.mean()计算每列的平均值。
df.median()计算每列的中位数。
df.mode()计算每列的众数。
df.count()计算每列非缺失值的数量。

假设我们有如下的 JSON 数据,数据保存到 data.json 文件:
data.json 文件

[{"name": "Alice","age": 25,"gender": "female","score": 80},{"name": "Bob","age": null,"gender": "male","score": 90},{"name": "Charlie","age": 30,"gender": "male","score": null},{"name": "David","age": 35,"gender": "male","score": 70}
]

我们可以使用 Pandas 读取 JSON 数据,并进行数据清洗和处理、数据选择和过滤、数据统计和描述等操作,具体如下:

# 实例 9
import pandas as pd# 读取 JSON 数据
df = pd.read_json('data.json')# 删除缺失值
df = df.dropna()# 用指定的值填充缺失值
df = df.fillna({'age': 0, 'score': 0})# 重命名列名
df = df.rename(columns={'name': '姓名', 'age': '年龄', 'gender': '性别', 'score': '成绩'})# 按成绩排序
df = df.sort_values(by='成绩', ascending=False)# 按性别分组并计算平均年龄和成绩
grouped = df.groupby('性别').agg({'年龄': 'mean', '成绩': 'mean'})# 选择成绩大于等于90的行,并只保留姓名和成绩两列
df = df.loc[df['成绩'] >= 90, ['姓名', '成绩']]# 计算每列的基本统计信息
stats = df.describe()# 计算每列的平均值
mean = df.mean()# 计算每列的中位数
median = df.median()# 计算每列的众数
mode = df.mode()# 计算每列非缺失值的数量
count = df.count()

后记

今天学习的是Python Pandas 常用函数学会了吗。 今天学习内容总结一下:

  1. Pandas 常用函数
  2. 读取数据
  3. 查看数据
  4. 数据清洗
  5. 数据选择和切片
  6. 数据排序
  7. 数据合并
  8. 数据选择和过滤
  9. 数据统计和描述

http://www.ppmy.cn/news/1030556.html

相关文章

GPU Microarch 学习笔记 [1]

WARP GPU的线程从thread grid 到thread block,一个thread block在CUDA Core上执行时,会分成warp执行,warp的颗粒度是32个线程。比如一个thread block可能有1024个线程,分成32个warp执行。 上图的CTA(cooperative thre…

MySQL - MySQL索引优化及口诀

索引口诀 全值匹配我最爱,最左前缀要遵守; 带头大哥不能丢,中间兄弟不能断; 索引列上不计算,范围之后全失效; LIKE百分写最右,覆盖索引不写 *; 不等空值还有or,索引失…

学C的第三十三天【C语言文件操作】

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第三十二天【动态内存管理】_高高的胖子的博客-CSDN博客 1 . 为什么要使用文件 以前面写的通讯录为例,当通讯录运行起来的时候,可以给通讯录中增加、删…

jquery发送ajax练习

jquery发送ajax练习 工具代码运行结果 工具 HBuilder X 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>通过ajax进行图片的提取和显示</title><style>div{background-color: beige;color: red;font-s…

spring常用注解标签总结

1&#xff1a;Component等 名称Component/Controller/Service/Repository类型类注解位置类定义上方作用设置该类为spring管理的bean属性value&#xff08;默认&#xff09;&#xff1a;定义bean的id 说明: Component注解如果不起名称&#xff0c;会有一个默认值就是当前类名首…

如何有效实施和推广电子文件管理系统?

随着科技的快速发展&#xff0c;传统的纸质文件管理方式逐渐被电子文件管理系统所取代。电子文件管理系统能够提高工作效率、节省空间和资源&#xff0c;并且有助于保护和维护文件的安全性。 1. 确定需求和目标 在实施电子文件管理系统之前&#xff0c;首先需要明确组织的需求…

【socket】recvfrom/sendto、recv/send、read/write问答

1.socket recvfrom能用于TCP吗&#xff1f; recvfrom()这个socket函数主要适用于UDP连接,在TCP连接上使用效果并不好。 这是因为recvfrom()的一些特性与TCP的工作方式不匹配: 1. recvfrom()可以获得数据来源地址和端口,但TCP作为连接导向的协议,这个信息在连接建立的时候就已经…

QT mouseTracking

在Qt中要捕捉鼠标移动事件需要重写MouseMoveEvent&#xff0c;但是MouseMoveEvent为了不太耗资源在默认状态下是要鼠标按下才能捕捉到。要想鼠标不按下时的移动也能捕捉到&#xff0c;需要setMouseTracking(true)。 如果鼠标跟踪失效&#xff08;默认&#xff09;&#xff0c;…