python 运用pandas 库处理excel 表格数据
文章目录
- 读取文件
- 查看数据
- 数据选择
- 数据筛选
- 创建新列
- 计算并总结数据
- 分组统计
读取文件
Pandas 是一个强大的数据分析库,它提供了丰富的数据结构和数据分析工具,其中之一是用于读取不同格式文件的 read_*
函数系列。以下是一个简单介绍如何使用 Pandas 读取常见文件格式的示例:
-
读取 Excel 文件:
import pandas as pd # 读取 Excel 文件的第一个表格 df = pd.read_excel('文件路径.xlsx') # 打印数据框的前几行 print(df.head())
查看数据
在 Pandas 中,可以使用多种方式来查看 Excel 文件中的 DataFrame 数据以及数据类型。以下是一些常见的方法:
-
查看前几行数据(或者后几行):
使用
head()
函数可以查看 DataFrame 的前几行数据,默认是前五行。你可以通过传递参数来指定显示的行数。import pandas as pd # 读取 Excel 文件 df = pd.read_excel('文件路径.xlsx') # 查看前五行数据 print(df.head(5)) # 查看后5行 print(df.tail(5))
-
查看数据类型:
使用
dtypes
属性可以查看 DataFrame 中每一列的数据类型。# 查看数据类型 print(df.dtypes)
-
查看统计摘要:
使用
describe()
函数可以生成关于数值列的统计摘要,包括均值、标准差、最小值、25%,50%,75% 以及最大值。# 查看统计摘要 print(df.describe())
-
查看单一列的唯一值:
如果想了解某一列的唯一值,可以使用
unique()
函数。# 查看某一列的唯一值 unique_values = df['列名'].unique() print(unique_values)
-
查看整个 DataFrame 的信息:
使用
info()
函数可以查看 DataFrame 的整体信息,包括每列的非空值数量、数据类型等。# 查看整个 DataFrame 的信息 print(df.info())
这些方法可以帮助你快速了解 Excel 文件中的数据,其结构以及数据类型。根据需要,选择适当的方法来查看和理解数据。
数据选择
当选择 DataFrame 中的数据时,下面是每个用法的简单例子:
-
选择列:
# 创建一个简单的 DataFrame import pandas as pd data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'San Francisco', 'Los Angeles']} df = pd.DataFrame(data) # 通过列名选择单列 single_column = df['Name']
-
选择多列:
# 选择多列 multiple_columns = df[['Name', 'Age']]
-
选择行:
# 通过标签索引选择单行 single_row_by_label = df.loc[0] # 通过整数索引选择单行 single_row_by_integer = df.iloc[0]
-
选择特定条件的行:
# 选择满足条件的行 selected_rows = df[df['Age'] > 25]
-
组合选择:
# 组合条件选择 selected_data = df[(df['Age'] > 25) & (df['City'] == 'San Francisco')]
-
选择特定位置的元素:
# 通过标签索引选择元素 element_by_label = df.at[0, 'Name'] # 通过整数索引选择元素 element_by_integer = df.iat[0, 0]
这些例子演示了如何使用 Pandas 对 DataFrame 进行简单的数据选择。你可以根据具体的数据和需求,灵活运用这些方法。
数据筛选
在 Pandas 中,数据筛选是通过选择满足特定条件的行或列来进行的。以下是一些常见的数据筛选用法:
-
根据条件筛选行:
通过设定条件来选择 DataFrame 中满足条件的行。
# 创建一个简单的 DataFrame import pandas as pd data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'San Francisco', 'Los Angeles']} df = pd.DataFrame(data) # 选择年龄大于 30 的行 filtered_rows = df[df['Age'] > 30]
-
使用
isin
方法筛选行:使用
isin
方法可以选择某一列中包含特定值的行。# 选择居住在指定城市的行 selected_cities = df[df['City'].isin(['New York', 'Los Angeles'])]
-
根据多个条件组合筛选行:
使用逻辑运算符
&
(与)、|
(或)、~
(非)等来组合多个条件。# 选择年龄大于 25 且居住在 'San Francisco' 的行 selected_data = df[(df['Age'] > 25) & (df['City'] == 'San Francisco')]
-
根据字符串条件筛选行:
使用字符串方法,如
str.contains
,可以在文本列中筛选包含特定字符串的行。# 选择包含 'Bob' 的行 selected_rows = df[df['Name'].str.contains('Bob')]
-
根据索引标签筛选行:
使用
loc
方法根据索引标签筛选行。# 设置 'Name' 列为索引列 df.set_index('Name', inplace=True) # 选择 'Bob' 的行 selected_row = df.loc['Bob']
-
根据列值筛选列:
使用列名来选择特定的列。
# 选择 'Name' 和 'Age' 列 selected_columns = df[['Name', 'Age']]
这些例子展示了在 Pandas 中进行数据筛选的常见用法。你可以根据实际情况和需求,使用这些方法进行灵活的数据筛选。
创建新列
在 Pandas 中,创建新列可以通过给 DataFrame 分配新的列名,并使用已有列的数据或进行一些计算得到新的列值。以下是一些常见的创建新列的方法:
-
使用已有列进行计算创建新列:
# 创建一个简单的 DataFrame import pandas as pd data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'San Francisco', 'Los Angeles']} df = pd.DataFrame(data) # 使用已有列 'Age' 创建一个新列 'Age_in_2_years' df['Age_in_2_years'] = df['Age'] + 2
-
使用函数进行计算创建新列:
可以使用函数对 DataFrame 的一列进行操作,并将结果存储在新列中。
# 创建一个函数,用于计算字符串长度 def calculate_name_length(name): return len(name) # 使用函数创建新列 'Name_Length' df['Name_Length'] = df['Name'].apply(calculate_name_length)
-
使用条件语句创建新列:
可以使用条件语句根据某一列的值创建新的列。
# 使用条件语句创建新列 'Is_Adult' df['Is_Adult'] = df['Age'] >= 18
-
根据多列创建新列:
使用多个已有列的数据进行计算,并创建新的列。
# 使用 'Age' 和 'Name_Length' 列创建新列 'Combined_Column' df['Combined_Column'] = df['Age'] * df['Name_Length']
-
使用
assign
方法创建新列:使用
assign
方法可以链式操作,一次性创建多个新列。# 使用 assign 方法创建多个新列 df = df.assign(Double_Age=df['Age'] * 2, Triple_Age=df['Age'] * 3)
这些方法提供了多种灵活的方式来创建新列,根据你的需求选择适当的方法。创建新列时,考虑数据的来源、计算逻辑以及新列的名称。
计算并总结数据
在 Pandas 中,可以使用一些内建的函数来计算总结数据,包括均值、中位数、标准差等。以下是一些常见的计算总结数据的方法:
-
计算列的均值:
# 计算 'Age' 列的均值 mean_age = df['Age'].mean()
-
计算列的中位数:
# 计算 'Age' 列的中位数 median_age = df['Age'].median()
-
计算列的标准差:
# 计算 'Age' 列的标准差 std_dev_age = df['Age'].std()
-
计算列的总和:
# 计算 'Age' 列的总和 sum_age = df['Age'].sum()
-
计算列的最小值和最大值:
# 计算 'Age' 列的最小值和最大值 min_age = df['Age'].min() max_age = df['Age'].max()
-
使用
describe
方法获取统计摘要:# 使用 describe 方法获取数值列的统计摘要 summary_stats = df.describe()
-
计算唯一值的数量:
# 计算 'City' 列中唯一值的数量 unique_cities_count = df['City'].nunique()
-
计算唯一值及其出现次数:
# 计算 'City' 列中每个唯一值的出现次数 city_counts = df['City'].value_counts()
这些方法提供了对数据集进行各种总结统计的途径。具体选择哪种方法取决于你关心的统计信息。可以根据实际需求选择适当的函数进行计算。
分组统计
在 Pandas 中,分组统计是一种强大的数据分析工具,允许你根据某一列或多列的值对数据进行分组,然后对每个组进行统计。以下是一些常见的分组统计的方法:
-
按单一列分组并计算统计量:
# 创建一个简单的 DataFrame import pandas as pd data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'Value': [10, 20, 30, 15, 25, 18]} df = pd.DataFrame(data) # 按 'Category' 列分组,并计算每组的均值 group_means = df.groupby('Category')['Value'].mean()
-
按多列分组并计算统计量:
# 创建一个带有多列的 DataFrame data = {'Category': ['A', 'B', 'A', 'B', 'A', 'B'], 'City': ['X', 'Y', 'X', 'Y', 'X', 'Y'], 'Value': [10, 20, 30, 15, 25, 18]} df = pd.DataFrame(data) # 按 'Category' 和 'City' 列分组,并计算每组的均值 group_means = df.groupby(['Category', 'City'])['Value'].mean()
-
同时计算多个统计量:
# 同时计算均值和标准差 group_stats = df.groupby('Category')['Value'].agg(['mean', 'std'])
-
使用
agg
方法应用多个函数:# 使用 agg 方法应用不同的统计函数 custom_stats = df.groupby('Category')['Value'].agg(['sum', 'mean', 'count'])
-
使用
apply
方法应用自定义函数:# 使用 apply 方法应用自定义函数 def custom_function(group): return group.max() - group.min() custom_result = df.groupby('Category')['Value'].apply(custom_function)
-
透视表(Pivot Table):
# 使用透视表计算 'City' 列和 'Category' 列的均值 pivot_table = df.pivot_table(values='Value', index='Category', columns='City', aggfunc='mean')
这些方法提供了丰富的分组统计功能,可以根据不同的需求进行定制化。分组统计对于理解数据的分布、进行对比分析等方面都非常有用。