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 页面中读取数据。 |
import pandas as pd
df = pd.read_csv('data.csv')
df = pd.read_excel('data.xlsx')
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table_name', conn)
json_string = '{"name": "John", "age": 30, "city": "New York"}'
df = pd.read_json(json_string)
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 |
显示数据的行数和列数。 |
df.head()
df.tail()
df.info()
df.describe()
df.shape
import pandas as pd
data = [
{"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))
以上实例输出结果为:
name likes url
0 Google 25 https:
1 Runoob 30 https:
name likes url
2 Taobao 35 https:
数据清洗
函数 |
说明 |
df.dropna() |
删除包含缺失值的行或列; |
df.fillna(value) |
将缺失值替换为指定的值; |
df.replace(old_value, new_value) |
将指定值替换为新值; |
df.duplicated() |
检查是否有重复的数据; |
df.drop_duplicates() |
删除重复的数据。 |
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 行数据。 |
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=5)
数据排序
函数 |
说明 |
df.sort_values(column_name) |
按照指定列的值排序; |
df.sort_values([column_name1, column_name2], ascending=[True, False]) |
按照多个列的值排序; |
df.sort_index() |
按照索引排序。 |
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) |
生成透视表。 |
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) |
按照指定列将两个数据框进行合并。 |
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 文件:
[
{
"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 数据,并进行数据清洗和处理、数据选择和过滤、数据统计和描述等操作,具体如下:
import pandas as pd
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'})
df = df.loc[df['成绩'] >= 90, ['姓名', '成绩']]
stats = df.describe()
mean = df.mean()
median = df.median()
mode = df.mode()
count = df.count()
输出结果如下:
# df
姓名 年龄 性别 成绩
1 Bob 0 male 90
# grouped
年龄 成绩
性别
female 25.000000 80
male 27.500000 80
# stats
成绩
count 1.0
mean 90.0
std NaN
min 90.0
25% 90.0
50% 90.0
75% 90.0
max 90.0
# mean
成绩 90.0
dtype: float64
# median
成绩 90.0
dtype: float64
# mode
姓名 成绩
0 Bob 90.0
# count
姓名 1
成绩 1
dtype: int64
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具