这篇文章可以算是直接搬运了,偶然看到cos大壮作者的关于Pandas的输出内容,一些很基础且很实用的功能函数。
首先给出一个示例数据,是一些用户的账号信息,基于这些数据,这里给出最常用,最重要的50个案例。
ID | Name | Age | Salary | Status |
---|---|---|---|---|
101 | Alice | 25 | 50000 | Active |
102 | Bob | 30 | 60000 | Inactive |
103 | Charlie | 22 | 45000 | Active |
104 | David | 35 | 75000 | Active |
105 | Eva | 28 | 55000 | Inactive |
每个案例包括使用方式、示例、以及一段Python代码。
import pandas as pd
data = {'ID': [101, 102, 103, 104, 105],
'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Age': [25, 30, 22, 35, 28],
'Salary': [50000, 60000, 45000, 75000, 55000],
'Status': ['Active', 'Inactive', 'Active', 'Active', 'Inactive']}
df = pd.DataFrame(data)
df.head()
使用方式:?用于查看DataFrame的前几行,默认为前5行。
示例:?查看前3行数据。
df.head(3)
df.tail()
使用方式:?用于查看DataFrame的后几行,默认为后5行。
示例:?查看后3行数据。
df.tail(3)
df.info()
使用方式:?提供DataFrame的基本信息,包括每列的非空值数量和数据类型。
示例:?查看数据信息。
df.info()
df.describe()
使用方式:?提供DataFrame的描述性统计信息,包括均值、标准差、最小值、25%分位数、中位数(50%分位数)、75%分位数和最大值。
示例:?查看数值列的统计信息。
df.desrcibe()
df['ColumnName']
使用方式:?通过列名选择DataFrame中的一列。
示例:?选择“Salary”列。
df['Salary']
df[['Column1', 'Column2']]
使用方式:?通过列名选择DataFrame中的一列。
示例:?选择“Name”和“Age”列。
df[['Name', 'Age']]
df.loc[index]
使用方式:?通过索引标签选择DataFrame中的一行。
示例:?选择索引为2的行。
df.loc[2]
df.loc[index, 'ColumnName']
使用方式:?通过索引标签和列名选择DataFrame中的特定元素。
示例:?选择索引为1的行的“Name”列的值。
df.loc[1, 'Name']
df[df['ColumnName'] > value]
使用方式:?使用条件过滤选择满足特定条件的行。
示例:?选择年龄大于25的行。
df[df['Age'] > 25]
df[(df['Column1'] > value1) & (df['Column2'] == value2)]
使用方式:?使用逻辑运算符(&:与,|:或,~:非)结合多个条件进行过滤。
示例:?选择年龄大于25且状态为“Active”的行。
df[(df['Age'] > 25) & (df['Status'] == 'Active')]
df.sort_values(by='ColumnName', ascending=False)
使用方式:?根据指定列的值进行升序或降序排序。
示例:?按工资降序排序。
df.sort_values(by='Salary', ascending=False)
df.dropna()
使用方式:?删除包含缺失值的行。
示例:?删除所有包含缺失值的行。
df.dropna()
df.fillna(value)
使用方式:?用指定值填充缺失值。
示例:?用均值填充所有缺失值。
df.fillna(df.mean())
df['NewColumn'] = values
使用方式:?新增一列,并为其赋值。
示例:?新增一列表示年龄是否大于30。
df['IsAbove30'] = df['Age'] > 30
df.drop('ColumnName', axis=1)
使用方式:?删除指定列。
示例:?删除“Status”列。
df.drop('Status', axis=1)
df.rename(columns={'OldName': 'NewName'}, inplace=True)
使用方式:?重命名指定列。
示例:?将“ID”列重命名为“EmployeeID”。
df.rename(columns={'ID': 'EmployeeID'}, inplace=True)
df.groupby('ColumnName').agg({'Column1': 'mean', 'Column2': 'sum'})
使用方式:?按照指定列进行分组,然后进行聚合统计。
示例:?按状态分组,计算平均年龄和总工资。
df.groupby('Status').agg({'Age': 'mean', 'Salary': 'sum'})
pd.concat([df1, df2], axis=0)
使用方式:?沿着指定轴合并两个DataFrame。
示例:?垂直合并两个DataFrame。
pd.concat([df1, df2], axis=0)
pd.concat([df1, df2], axis=1)
使用方式:?沿着列方向合并两个DataFrame。
示例:?横向合并两个DataFrame。
pd.concat([df1, df2], axis=1)
pd.merge(df1, df2, on='KeyColumn', how='inner')
使用方式:?使用指定列进行合并,指定合并方式(内连接、左连接、右连接、外连接)。
示例:?使用“ID”列内连接两个DataFrame。
pd.merge(df1, df2, on='ID', how='inner')
pd.pivot_table(df, values='ValueColumn', index='IndexColumn', columns='ColumnToPivot', aggfunc='mean')
使用方式:?创建透视表,汇总数据。
示例:?创建一个透视表,计算不同状态下的平均工资。
pd.pivot_table(df, values='Salary', index='Status', aggfunc='mean')
pd.get_dummies(df, columns=['CategoricalColumn'])
使用方式:?将分类变量转换为独热编码。
示例:?对“Status”列进行独热编码。
pd.get_dummies(df, columns=['Status'])
(独热编码:(One-Hot Encoding),也叫一位有效编码,是用来表示离散变量(categorical data)的一种方法。在机器学习和深度学习中经常会使用独热编码来将离散变量转换为多维向量,以便于算法处理。将离散型的特征数据映射到一个高维空间中,每个可能的取值都对应于高维空间的一个点,在这些点上取值为1,其余均为0,因此独热编码也被称为“一位有效编码”或“One-of-K encoding”)
df['StringColumn'].str.method()
使用方式:?对字符串列进行各种处理,如切片、替换等。
示例:?将“Name”列转换为大写。
df['Name'].str.upper()
df['DateTimeColumn'] = pd.to_datetime(df['DateTimeColumn'])
使用方式:将字符串列转换为日期时间类型
示例:??将“Date”列转换为日期时间类型。
df['Date'] = pd.to_datetime(df['Date'])
df.resample('D').sum()
使用方式:?对时间序列数据进行重新采样。
示例:?将数据按天重新采样并求和。
df.resample('D').sum()
df['Column'].rolling(window=size).mean()
使用方式:?计算滑动窗口的统计量,如均值。
示例:?计算“Salary”列的3天滑动平均值。
df['Salary'].rolling(window=3).mean()
df.plot(x='Column1', y='Column2', kind='scatter')
使用方式:?使用内置的绘图功能绘制各种图表。
示例:?绘制散点图。
df.plot(x='Age', y='Salary', kind='scatter')
df.to_csv('filename.csv', index=False)
使用方式:?将DataFrame保存为CSV文件。
示例:?将DataFrame保存为CSV文件。
df.to_csv('employee_data.csv', index=False)
df = pd.read_csv('filename.csv')
使用方式:?从文件中加载数据到DataFrame。
示例:?从CSV文件加载数据。
df = pd.read_csv('employee_data.csv')
df['NewColumn'] = df['Column'].apply(lambda x: x * 2)
使用方式: 使用apply函数对某列的每个元素进行操作,可传递自定义函数。
示例:?将“Age”列的每个元素乘以2。
df['DoubleAge'] = df['Age'].apply(lambda x: x * 2)
df['Status'] = df['Status'].map({'Active': 1, 'Inactive': 0})
使用方式:?使用map函数根据字典或函数替换列中的值。
示例:?将“Status”列的值映射为1和0。
df['Status'] = df['Status'].map({'Active': 1, 'Inactive': 0})
df['AgeGroup'] = pd.cut(df['Age'], bins=[20, 30, 40, 50], labels=['20-30', '30-40', '40-50'])
使用方式:?使用cut函数将数值列分成不同的箱子,用标签表示。
示例:?将“Age”列分成年龄组。
df['AgeGroup'] = pd.cut(df['Age'], bins=[20, 30, 40, 50], labels=['20-30', '30-40', '40-50'])
df['MeanSalaryByAge'] = df.groupby('Age')['Salary'].transform('mean')
使用方式:?使用groupby
和transform
在组内进行操作,并将结果广播到原始DataFrame。
示例:?计算每个年龄组的平均工资。
df['MeanSalaryByAge'] = df.groupby('Age')['Salary'].transform('mean')
df['NewColumn'] = df['Column'].astype(float)
使用方式:?使用astype
将列的数据类型转换为指定类型。
示例:?将“Age”列转换为浮点数类型。
df['Age'] = df['Age'].astype(float)
df[df['Column'].isin(['value1', 'value2'])]
使用方式:?使用isin
过滤包含在给定列表中的值的行。
示例:?选择“Name”列包含特定值的行。
df[df['Name'].isin(['Alice', 'Bob'])]
df.duplicated(subset=['Column1', 'Column2'])
df.drop_duplicates(subset=['Column1', 'Column2'], keep='first')
使用方式:?使用duplicated
检测重复值,使用drop_duplicates
删除重复值。
示例:?查找并删除重复行。
df.duplicated(subset=['Name'])
df.drop_duplicates(subset=['Name'], keep='first')
df.nlargest(5, 'ColumnName')
df.nsmallest(5, 'ColumnName')
使用方式:?使用nlargest
获取最大值,使用nsmallest
获取最小值。
示例:?获取工资最高的前5名和最低的前5名员工。
df.nlargest(5, 'Salary')
df.nsmallest(5, 'Salary')
df['Column'].value_counts()
使用方式:?使用value_counts
计算某列中每个唯一值的频率。
示例:?计算“Status”列中每个状态的数量。
df['Status'].value_counts()
df[df['Column'].str.contains('pattern', case=False, na=False)]
使用方式:?使用str.contains
进行模糊匹配,可指定大小写敏感和处理缺失值。
示例:?选择“Name”列包含字母“A”的行。
df[df['Name'].str.contains('A', case=False, na=False)]
df.replace({'OldValue': 'NewValue'})
使用方式:?使用replace
替换DataFrame中的值。
示例:?将“Status”列中的“Active”替换为“ActiveStatus”。
df.replace({'Active': 'ActiveStatus'})
df.pivot(index='IndexColumn', columns='ColumnToPivot', values='ValueColumn')
使用方式:?使用pivot
进行数据透视。
示例:?创建一个数据透视表。
df.pivot(index='ID', columns='Status', values='Salary')
pd.merge(df1, df2, left_on='LeftColumn', right_on='RightColumn', suffixes=('_left', '_right'))
使用方式:?在使用merge
时,处理两个DataFrame中相同列名的情况。
示例:?合并两个DataFrame,处理重复列名。
pd.merge(df1, df2, left_on='ID', right_on='ID', suffixes=('_left', '_right'))
df.at[index, 'ColumnName']
df.iat[index, columnIndex]
使用方式:?使用at
和iat
快速访问DataFrame中的元素。
示例:?获取第2行的“Name”列的值。
df.at[1, 'Name']
df['NewColumn'] = df['Column'].mask(df['Condition'])
使用方式:?使用mask
根据条件替换值。
示例:?根据“Salary”列的条件进行替换。
df['Bonus'] = df['Salary'].mask(df['Salary'] > 60000, 'HighBonus')
df.query('Column > value')
使用方式:?使用query
进行条件查询。
示例:?查询“Age”大于25的行。
df.query('Age > 25')
pd.crosstab(df['Column1'], df['Column2'])
使用方式:?使用crosstab
生成交叉表。
示例:?生成“Status”和“Age”之间的交叉表。
pd.crosstab(df['Status'], df['Age'])
df.explode('ListColumn')
使用方式:?使用explode
展开包含列表的列。
示例:?展开“Hobbies”列的列表。
df.explode('Hobbies')
df.groupby('GroupColumn').agg({'Column1': 'mean', 'Column2': ['min', 'max']})
使用方式:?使用agg
同时进行多个聚合操作。
示例:?计算每个组的平均值、最小值和最大值。
df.groupby('Status').agg({'Salary': ['mean', 'min', 'max']})
df.pipe(func1).pipe(func2, arg1='value').pipe(func3)
使用方式:?使用pipe
进行链式操作,将多个操作组合在一起。
示例:?使用pipe
调用多个自定义函数。
df.pipe(func1).pipe(func2, arg1='value').pipe(func3)
来源:深夜努力写Python? 作者:cos大壮