当前位置:首页 > 编程开发 > Python > 正文内容

Python中 pandas 数据处理常用函数与方法的详细介绍

Codefans1年前 (2023-04-11)Python564

数据读取和写入

pandas.read_csv(filepath_or_buffer, sep=',', header='infer', names=None): 从 csv 文件中读取数据,返回一个 DataFrame 对象。其中 filepath_or_buffer 为文件路径或文件对象,sep 表示列分隔符,默认为逗号,header 表示列名所在行号,默认为第一行,names 表示自定义列名,默认为 None。

import pandas as pd
# 读取 csv 文件
df = pd.read_csv('data.csv')
print(df.head())
pandas.read_excel(io, sheet_name=0, header=0, names=None): 从 Excel 文件中读取数据,返回一个 DataFrame 对象。其中 io 为文件路径、文件对象或字节流,sheet_name 表示要读取的工作表名,可以是字符串、整数、列表或 None,header 表示列名所在行号,默认为第一行,names 表示自定义列名,默认为 None。

import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('data.xlsx')
print(df.head())
pandas.read_sql(sql, con): 从 SQL 数据库中读取数据,返回一个 DataFrame 对象。其中 sql 为 SQL 查询语句,con 为数据库连接对象或字符串格式的连接信息。

import pandas as pd
import sqlite3
# 连接 SQLite 数据库
conn = sqlite3.connect('data.db')
# 读取 SQL 数据库
df = pd.read_sql('SELECT * FROM my_table', conn)
print(df.head())
# 关闭数据库连接
conn.close()
pandas.DataFrame.to_csv(path_or_buf, sep=',', header=True, index=True): 将数据写入到 csv 文件,返回 None。其中 path_or_buf 表示文件路径或文件对象,sep 表示列分隔符,默认为逗号,header 表示是否写入列名,默认为 True,index 表示是否写入行索引,默认为 True。

import pandas as pd
# 写入 csv 文件
df.to_csv('output.csv', index=False)
pandas.DataFrame.to_excel(excel_writer, sheet_name='Sheet1', index=True, header=True): 将数据写入到 Excel 文件中,返回 None。其中 excel_writer 表示文件名或文件对象,sheet_name 表示要写入的工作表名,默认为 Sheet1,index 表示是否写入行索引,默认为 True,header 表示是否写入列名,默认为 True。
python
import pandas as pd
# 写入 Excel 文件
with pd.ExcelWriter('output.xlsx') as writer:
    df.to_excel(writer, sheet_name='Sheet1', index=False)

基本信息查看和统计

pandas.DataFrame.head(n=5): 查看 DataFrame 前 n 行数据,返回一个 DataFrame 对象。

import pandas as pd
# 查看前 10 行数据
print(df.head(10))
pandas.DataFrame.tail(n=5): 查看 DataFrame 后 n 行数据,返回一个 DataFrame 对象。

import pandas as pd
# 查看后 10 行数据
print(df.tail(10))
pandas.DataFrame.info(): 查看 DataFrame 的基本信息,返回 None。包括列名、非空值数量、数据类型等。

import pandas as pd
# 查看 DataFrame 的基本信息
df.info()
pandas.DataFrame.describe(include=None, exclude=None): 查看 DataFrame 中数值型列的基本统计量,返回一个 DataFrame 对象。包括计数、均值、标准差、最小值、25%、50%、75% 和最大值。其中 include 和 exclude 分别用于指定哪些列包含和不包含在结果中,默认为 None,表示包含所有数值型列。

import pandas as pd
# 查看 DataFrame 中数值型列的基本统计量
print(df.describe())
pandas.Series.value_counts(normalize=False, sort=True, ascending=False): 查看 Series 中各元素出现次数的统计结果,返回一个 Series 对象。其中 normalize 表示是否返回相对频率,默认为 False,sort 表示是否按照出现次数排序,默认为 True,ascending 表示是否按照升序排列,默认为 False。

import pandas as pd
# 查看 Series 中各元素出现次数的统计结果
print(df['color'].value_counts())
pandas.DataFrame.isnull(): 检测 DataFrame 中哪些元素为缺失值,返回一个与 DataFrame 大小相同的布尔型 DataFrame。

import pandas as pd
# 检测 DataFrame 中哪些元素为缺失值
print(df.isnull())
pandas.DataFrame.notnull(): 检测 DataFrame 中哪些元素为非缺失值,返回一个与 DataFrame 大小相同的布尔型 DataFrame。

import pandas as pd
# 检测 DataFrame 中哪些元素为非缺失值
print(df.notnull())

数据筛选和操作

pandas.DataFrame.loc[row_indexer, col_indexer]: 根据行列索引值进行定位并筛选相应的数据,返回一个 DataFrame 或 Series 对象。其中 row_indexer 表示行索引器,可以是标签、布尔数组、切片或条件表达式,col_indexer 表示列索引器,可以是标签、布尔数组、切片或列名的列表。

import pandas as pd
# 根据行列索引值进行定位并筛选相应的数据
df.loc[df['color'] == 'red', ['name', 'age']]
pandas.DataFrame.iloc[row_indexer, col_indexer]: 根据行列索引编号进行定位并筛选相应的数据,返回一个 DataFrame 或 Series 对象。其中 row_indexer 和 col_indexer 分别表示行和列的位置编号,可以是整数、布尔数组、切片或整数的列表。

import pandas as pd
# 根据行列索引编号进行定位并筛选相应的数据
df.iloc[[0, 2, 4], [1, 3, 5]]
pandas.DataFrame.query(expr, inplace=False): 根据条件表达式对 DataFrame 进行筛选,返回一个 DataFrame 对象。其中 expr 表示条件表达式,可以包含多个条件组合,例如 age > 30 & name == 'Alice',inplace 表示是否在原 DataFrame 上进行修改,默认为 False。

import pandas as pd
# 根据条件表达式对 DataFrame 进行筛选
df.query('age > 30 & name == "Alice"')
pandas.DataFrame.filter(items=None, like=None, regex=None, axis=None): 根据列名、正则表达式或通配符对 DataFrame 进行列筛选,返回一个 DataFrame 对象。其中 items 表示要保留的列名列表,like 表示包含指定字符串的列名,regex 表示正则表达式模式,axis 表示筛选方向,0 表示对列进行筛选,1 表示对行进行筛选。

import pandas as pd
# 根据列名进行筛选
df.filter(items=['name', 'age'])
# 根据正则表达式进行筛选
df.filter(regex='[a-z]+')
# 根据通配符进行筛选
df.filter(like='name')
pandas.DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False): 删除 DataFrame 中的缺失值,返回一个新的 DataFrame 对象或在原对象上进行修改。其中 axis 表示删除方向,0 表示删除行,1 表示删除列,默认为 0,how 表示删除方式,'any' 表示任意缺失值即删除,'all' 表示所有元素都是缺失值才删除,默认为 'any',thresh 表示保留非缺失值的数量阈值,subset 表示仅对指定的列进行删除操作,inplace 表示是否在原 DataFrame 上进行修改,默认为 False。

import pandas as pd
# 删除 DataFrame 中的缺失值
df.dropna()
pandas.DataFrame.fillna(value=None, method=None, axis=None, inplace=False): 填充 DataFrame 中的缺失值,返回一个新的 DataFrame 对象或在原对象上进行修改。其中 value 表示填充值,可以是标量、字典、Series 或 DataFrame,method 表示填充方式,'ffill'(或 'pad')表示用前一个非缺失值填充,'bfill'(或 'backfill')表示用后一个非缺失值填充,默认为 None,axis 表示填充方向,0 表示按列填充,1 表示按行填充,默认为 None,表示自动选择填充方向,inplace 表示是否在原 DataFrame 上进行修改,默认为 False。

import pandas as pd
# 填充 DataFrame 中的缺失值
df.fillna(0)
pandas.DataFrame.merge(right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, suffixes=('_x', '_y'), validate=None): 合并多个 DataFrame,返回一个新的 DataFrame 对象。其中 right 表示要合并的 DataFrame,how 表示合并方式,'inner' 表示内连接,'outer' 表示外连接,'left' 和 'right' 分别表示左连接和右连接,默认为 'inner',on 表示用于连接的列名或列名列表,必须在两个 DataFrame 中都存在,left_on 和 right_on 分别用于指定左 DataFrame 和右 DataFrame 中用于连接的列名,可以是字符串或字符串列表,left_index 和 right_index 表示是否使用行索引作为连接键,默认为 False,suffixes 表示重复列名的后缀,validate 表示检查合并键的类型和值。

import pandas as pd
# 合并多个 DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'value': [4, 5, 6]})
pd.merge(df1, df2, how='outer', on='key')
pandas.DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False): 基于索引进行 DataFrame 的连接操作,返回一个新的 DataFrame 对象。其中 other 表示要连接的另一个 DataFrame,on 表示连接键的名称或列表,必须是两个 DataFrame 中的列名,how 表示连接类型,'left' 表示左连接,'right' 表示右连接,'outer' 表示外连接,默认为 'left',lsuffix 和 rsuffix 分别表示重复列名的后缀,sort 表示是否根据连接键排序,默认为 False。
import pandas as pd
# 基于索引进行 DataFrame 的连接操作
df1 = pd.DataFrame({'value1': [1, 2, 3], 'value2': [4, 5, 6]}, index=['A', 'B', 'C'])
df2 = pd.DataFrame({'value3': [7, 8, 9], 'value4': [10, 11, 12]}, index=['B', 'C', 'D'])
df1.join(df2, how='outer')
pandas.DataFrame.groupby(by, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs): 根据指定的列名对 DataFrame 进行分组,并对每个分组进行聚合计算,返回一个 GroupBy 对象。其中 by 表示用于分组的列名或列名列表,axis 表示分组方向,0 表示按列分组,1 表示按行分组,默认为 0,level 表示分组级别,若 DataFrame 是层次化索引,则用于指定分组级别的名称或索引位置,as_index 表示是否将分组列作为索引,默认为 True,sort 表示是否对结果进行排序,默认为 True,group_keys 表示是否将组名作为索引,默认为 True,squeeze 表示是否在结果中去除冗余维度,若分组后每个组只包含一个值,则返回 Series 对象,否则返回 DataFrame 对象,observed 表示是否只保留出现在原数据中的分组键。

import pandas as pd
# 根据列名进行分组并计算均值
df.groupby('color').mean()
pandas.Series.map(arg, na_action=None): 对 Series 中的元素进行映射操作,返回一个新的 Series 对象。其中 arg 可以是函数、字典、Series 或类数组对象,表示映射规则,na_action 表示对缺失值的处理方式,'ignore' 表示忽略缺失值,'raise' 表示引发异常,默认为 None。

import pandas as pd
# 对 Series 中的元素进行映射操作
df['color'].map({'red': 'r', 'green': 'g', 'blue': 'b'})
pandas.Series.apply(func, convert_dtype=True, args=(), **kwds): 对 Series 的每个元素应用指定的函数,返回一个新的 Series 对象。其中 func 表示要应用的函数,可以是函数、方法、lambda 表达式等,convert_dtype 表示是否将结果转换为与输入相同的数据类型,默认为 True,args 和 kwds 表示传递给函数的参数。

import pandas as pd
# 对 Series 中的每个元素应用指定的函数
df['age'].apply(lambda x: x + 1)
pandas.DataFrame.applymap(func): 对 DataFrame 的每个元素应用指定的函数,返回一个新的 DataFrame 对象。其中 func 表示要应用的函数,可以是函数、方法、lambda 表达式等。

import pandas as pd
# 对 DataFrame 的每个元素应用指定的函数
df.applymap(lambda x: str(x).upper())


扫描二维码推送至手机访问。

版权声明:本文由图慧网发布,如需转载请注明出处。

本文链接:http://www.tuh8.com/?id=60

分享给朋友:

“Python中 pandas 数据处理常用函数与方法的详细介绍” 的相关文章

Python requests库中几个常用方法的使用示例

GET请求GET请求是requests库中最常用的请求方法,它用于获取指定URL的资源。以下是一个GET请求的示例:import requests url = 'https://www.baidu.com' response = ...

python requests库使用详细教程

Python 中的 requests 库是一个简单易用的 HTTP 请求库,支持多种请求方法、多种参数设置、并且使用广泛。本文将详细介绍如何使用 requests 库发送 HTTP 请求。安装使用 pip 命令进行安装:pip install requests导入在编写 Pyth...

python BeautifulSoup4(bs4)使用教程

Python 中的 BeautifulSoup4(通常简称为 bs4)是一个流行的 HTML 解析器,是从 HTML 或 XML 文件中提取数据(或屏蔽 HTML/XML 标记)的一种库。在本文中,我将介绍如何安装、导入和使用 bs4 库。安装要安装 bs4,可以使用 pip 命令:pip ...

Python pandas库159个常用方法使用说明

Pandas库专为数据分析而设计,它是使Python成为强大而高效的数据分析环境的重要因素。一、Pandas数据结构1、import pandas as pdimport numpy as npimport matplotlib.pyplot as plt2、S1=pd.Series([‘a’,’b...

Python 和 ddddocr 识别图片中文字教程

1.安装 ddddocr在终端执行以下命令安装 ddddocr:pip install ddddocr加载并识别图片使用 ddddocr 可以非常方便地加载并识别图片中的文字。下面是代码示例:import requests from io impo...

最新版selenium中find_element使用方法

find_element(By)driver.find_element(By.ID, 'element_id')driver.find_element(By.NAME, 'element_name')driver.find_element(By.CLASS_NAME,...