<返回更多

Python基础:DF的用法

2023-09-26  今日头条  写代码那些事
加入收藏

数据是现代应用程序的核心,而Python/ target=_blank class=infotextkey>Python中的DataFrame是处理和分析数据的强大工具之一。无论你是数据分析师、数据科学家还是开发人员,掌握DataFrame的使用将大大提高你的数据处理能力。本教程将引导你深入学习Python中DataFrame的各种用法,从基础到高级,让你能够轻松处理和分析各种数据集。

介绍DataFrame

什么是DataFrame?

DataFrame 是一个关键的数据结构,用于在Python中处理和分析数据。它是pandas库(一个用于数据分析的Python库)的核心组件之一。

DataFrame可以被看作是一个类似于电子表格或SQL表的二维数据结构,其中数据以表格的形式排列,并且具有行和列的标签。每一列可以包含不同类型的数据,例如整数、浮点数、字符串等,而且每一行都有一个唯一的索引。

DataFrame的特点包括:

  1. 表格结构:数据以表格形式组织,易于理解和展示。
  2. 标签:行和列都有标签,可用于引用数据。
  3. 多数据类型:不同类型的数据可以存储在同一个DataFrame中。
  4. 数据操作:支持各种数据操作,如筛选、分组、聚合、排序等。

DataFrame是数据科学家和分析师的利器,因为它能够轻松处理和分析结构化数据,例如CSV文件、数据库查询结果等。

为什么要使用DataFrame?

使用DataFrame有以下好处:

  1. 数据处理和分析:DataFrame提供了强大的工具和方法,用于处理和分析数据,如统计计算、数据透视表、数据合并等。
  2. 数据清洗:DataFrame能够轻松处理缺失值、重复值和异常值,使数据更干净和可用。
  3. 数据可视化:结合其他库(如Matplotlib和Seaborn),DataFrame可用于创建各种数据可视化图表。
  4. 数据导入和导出:DataFrame支持从多种数据源(如CSV、Excel、数据库)导入数据,并可以将数据导出到各种格式。
  5. 数据转换:DataFrame允许你进行数据类型转换、列重命名、新增列等数据转换操作。
  6. 数据索引和选择:你可以轻松地选择和检索DataFrame中的数据,无论是按标签还是按位置。
  7. 广泛的支持:pandas库是一个活跃的开源项目,得到了广泛的支持和社区贡献,因此有大量文档和教程可供学习和参考。

安装和导入pandas库

要开始使用DataFrame,你需要首先安装并导入pandas库。以下是安装和导入pandas库的步骤:

步骤 1:安装pandas库

你可以使用pip(Python包管理器)来安装pandas。打开终端或命令提示符,并运行以下命令:

pip install pandas

步骤 2:导入pandas库

一旦安装了pandas,你可以在Python脚本或Jupyter Notebook中导入它:

import pandas as pd

通常,pandas库被约定为使用pd作为别名,以便在代码中更容易地引用它的函数和类。

安装并导入pandas库后,你就可以开始创建和操作DataFrame以进行数据分析和处理

创建DataFrame

从列表和字典创建DataFrame

在pandas中,你可以轻松地从Python列表和字典创建DataFrame。下面是从列表和字典创建DataFrame的示例代码以及相关注释:

import pandas as pd

# 创建一个包含列表的字典
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'San Francisco', 'Los Angeles']
}

# 使用字典创建DataFrame
df_from_dict = pd.DataFrame(data)

# 创建一个包含列表的列表
data_list = [
    ['Alice', 25, 'New York'],
    ['Bob', 30, 'San Francisco'],
    ['Charlie', 35, 'Los Angeles']
]

# 指定列名创建DataFrame
columns = ['Name', 'Age', 'City']
df_from_list = pd.DataFrame(data_list, columns=columns)

# 打印两个DataFrame
print("DataFrame from Dictionary:")
print(df_from_dict)

print("nDataFrame from List:")
print(df_from_list)

上述代码中,首先创建了一个包含字典和列表数据的数据结构,然后分别使用这两种数据结构创建了两个DataFrame。字典中的键('Name'、'Age'、'City')成为了DataFrame的列名。

从外部数据源导入DataFrame

pandas支持从多种外部数据源导入数据,如CSV文件、Excel文件、SQL数据库等。以下是从CSV文件导入数据创建DataFrame的示例:

import pandas as pd

# 从CSV文件导入数据
csv_file = 'data.csv'  # 你的CSV文件路径
df_from_csv = pd.read_csv(csv_file)

# 打印导入的DataFrame
print("DataFrame from CSV:")
print(df_from_csv)

上述代码中,我们使用pd.read_csv()函数从一个CSV文件导入数据并创建一个DataFrame。你只需提供CSV文件的路径即可。同样,你也可以使用pd.read_excel()来导入Excel文件,或使用pd.read_sql()来从数据库中导入数据。

DataFrame的基本属性

DataFrame具有多个属性,可以帮助你了解数据的基本信息。以下是一些常用的DataFrame属性和示例代码:

import pandas as pd

# 创建一个示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'San Francisco', 'Los Angeles']
}

df = pd.DataFrame(data)

# 查看前几行数据,默认显示前5行
print("Head of DataFrame:")
print(df.head())

# 查看DataFrame的形状(行数和列数)
shape = df.shape
print("nDataFrame Shape:", shape)

# 查看DataFrame的列名
columns = df.columns
print("nDataFrame Columns:", columns)

# 查看DataFrame的数据类型信息
data_types = df.dtypes
print("nData Types:")
print(data_types)

# 查看DataFrame的统计摘要信息
summary = df.describe()
print("nSummary Statistics:")
print(summary)

上述代码中,我们首先创建了一个示例DataFrame,然后使用不同的属性来查看数据的头部、形状、列名、数据类型和统计摘要信息。这些属性可以帮助你更好地了解和分析数据。

这些是从列表和字典创建DataFrame、从外部数据源导入DataFrame以及DataFrame的基本属性的示例。DataFrame是pandas库的核心数据结构,具有强大的数据处理和分析功能

数据操作与筛选

选择列和行

在DataFrame中,你可以使用不同的方法选择列和行。以下是一些示例代码和注释,演示如何执行这些操作:

import pandas as pd

# 创建一个示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'San Francisco', 'Los Angeles']
}

df = pd.DataFrame(data)

# 选择单列(返回一个Series)
name_column = df['Name']
print("Name Column:")
print(name_column)

# 选择多列(返回一个新的DataFrame)
subset = df[['Name', 'Age']]
print("nSubset of DataFrame:")
print(subset)

# 选择行(使用iloc按索引,返回一个Series)
row = df.iloc[0]
print("nFirst Row (by Index):")
print(row)

# 选择行(使用loc按标签,返回一个Series)
row = df.loc[0]
print("nFirst Row (by Label):")
print(row)

# 选择多行(返回一个新的DataFrame)
subset = df.iloc[1:3]
print("nSubset of Rows (by Index):")
print(subset)

# 选择多行(返回一个新的DataFrame)
subset = df.loc[[0, 2]]
print("nSubset of Rows (by Label):")
print(subset)

上述代码中,我们首先创建了一个示例DataFrame,然后使用不同的方法选择列和行。df['ColumnName']选择单列,df[['Column1', 'Column2']]选择多列,而df.iloc[index]和df.loc[label]选择单行,df.iloc[start:end]和df.loc[[label1, label2]]选择多行。

条件筛选

条件筛选允许你根据某些条件选择DataFrame中的行。以下是一个示例代码和注释,演示如何执行条件筛选:

import pandas as pd

# 创建一个示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'San Francisco', 'Los Angeles']
}

df = pd.DataFrame(data)

# 条件筛选,选择年龄大于等于30的行
filtered_df = df[df['Age'] >= 30]
print("Filtered DataFrame:")
print(filtered_df)

在上述代码中,我们使用条件筛选来选择年龄大于等于30的行。你可以在筛选中使用各种条件和逻辑运算符来满足你的需求。

添加和删除列

你可以轻松地添加新列到DataFrame,也可以删除现有列。以下是一些示例代码和注释,演示如何执行这些操作:

import pandas as pd

# 创建一个示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'San Francisco', 'Los Angeles']
}

df = pd.DataFrame(data)

# 添加新列
df['Gender'] = ['Female', 'Male', 'Male']
print("DataFrame with New Column:")
print(df)

# 删除列
df.drop(columns=['City'], inplace=True)
print("nDataFrame with 'City' Column Removed:")
print(df)

在上述代码中,我们首先使用df['NewColumnName']语法添加新列到DataFrame,然后使用df.drop(columns=['ColumnName'])来删除指定的列。请注意,删除列时需要使用inplace=True来使修改生效。

数据排序

你可以对DataFrame中的数据进行排序,以便按特定列的值对行进行排序。以下是一个示例代码和注释,演示如何执行数据排序操作:

import pandas as pd

# 创建一个示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'San Francisco', 'Los Angeles']
}

df = pd.DataFrame(data)

# 按年龄升序排序
sorted_df = df.sort_values(by='Age')
print("DataFrame Sorted by Age (Ascending):")
print(sorted_df)

# 按年龄降序排序
sorted_df_desc = df.sort_values(by='Age', ascending=False)
print("nDataFrame Sorted by Age (Descending):")
print(sorted_df_desc)

在上述代码中,我们使用df.sort_values(by='ColumnName')对DataFrame进行升序排序,并可以使用ascending=False参数来进行降序排序。

这些是选择列和行、条件筛选、添加和删除列以及数据排序的示例。DataFrame提供了丰富的数据操作功能,使你能够轻松地处理和分析数据。

数据分组与聚合

分组操作

在DataFrame中,分组操作是一个强大的功能,可以让你根据一个或多个列的值将数据集分成多个小组,并对每个小组应用各种操作。以下是一个示例代码和注释,演示如何执行分组操作:

import pandas as pd

# 创建一个示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'City': ['New York', 'San Francisco', 'Los Angeles', 'New York', 'San Francisco'],
    'Salary': [50000, 60000, 75000, 48000, 70000]
}

df = pd.DataFrame(data)

# 根据城市分组并计算每个城市的平均工资
city_groups = df.groupby('City')
city_average_salary = city_groups['Salary'].mean()
print("Average Salary by City:")
print(city_average_salary)

在上述代码中,我们首先创建了一个示例DataFrame,然后使用groupby()方法根据城市对数据进行分组。接下来,我们使用mean()函数计算了每个城市的平均工资。这样,你可以轻松地对不同分组的数据执行各种操作,如计算统计信息、应用自定义函数等。

聚合函数

在DataFrame的分组操作中,聚合函数是常用的工具,它允许你对每个分组应用汇总计算,例如求和、平均值、最大值、最小值等。以下是一些示例代码和注释,演示如何使用聚合函数:

import pandas as pd

# 创建一个示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'City': ['New York', 'San Francisco', 'Los Angeles', 'New York', 'San Francisco'],
    'Salary': [50000, 60000, 75000, 48000, 70000]
}

df = pd.DataFrame(data)

# 根据城市分组并计算每个城市的总工资
city_groups = df.groupby('City')
city_total_salary = city_groups['Salary'].sum()
print("Total Salary by City:")
print(city_total_salary)

# 同时计算多个聚合函数
city_aggregated = city_groups['Salary'].agg(['sum', 'mean', 'max', 'min'])
print("nAggregated Data by City:")
print(city_aggregated)

在上述代码中,我们首先使用groupby()方法根据城市对数据进行分组,然后使用agg()方法应用多个聚合函数,如sum、mean、max和min,以获得有关每个城市的聚合统计信息。

数据透视表

数据透视表是一种用于在DataFrame中汇总和分析数据的强大工具,它允许你根据一个或多个列的值将数据进行重排,并对交叉项应用聚合函数。以下是一个示例代码和注释,演示如何创建数据透视表:

import pandas as pd

# 创建一个示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'City': ['New York', 'San Francisco', 'Los Angeles', 'New York', 'San Francisco'],
    'Salary': [50000, 60000, 75000, 48000, 70000]
}

df = pd.DataFrame(data)

# 创建数据透视表,计算每个城市的平均工资
pivot_table = pd.pivot_table(df, values='Salary', index='City', aggfunc='mean')
print("Pivot Table (Average Salary by City):")
print(pivot_table)

在上述代码中,我们使用pd.pivot_table()函数创建了一个数据透视表,其中values参数指定了要分析的值列(Salary),index参数指定了用于分组的列(City),aggfunc参数指定了应用于聚合的函数(这里是mean)。数据透视表可以让你轻松地汇总和分析数据,以获得有关数据的见解。

这些是分组操作、聚合函数和数据透视表的示例。它们是数据分析中非常常用的工具,可帮助你深入了解和分析大量的数据。

 

数据清洗与处理

处理缺失值

在数据分析和处理中,经常会遇到缺失值(NaN或None),它们可能是由于数据采集或处理错误而产生的。pandas提供了多种方法来处理缺失值。以下是一些示例代码和注释,演示如何处理缺失值:

import pandas as pd
import numpy as np

# 创建一个包含缺失值的示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', None, 'Eve'],
    'Age': [25, None, 35, 28, 30],
    'Salary': [50000, 60000, None, 48000, 70000]
}

df = pd.DataFrame(data)

# 检测缺失值
missing_data = df.isnull()
print("Missing Data:")
print(missing_data)

# 删除包含缺失值的行
df_dropna = df.dropna()
print("nDataFrame after Dropping Missing Values:")
print(df_dropna)

# 填充缺失值
df_fillna = df.fillna({'Name': 'Unknown', 'Age': df['Age'].mean(), 'Salary': 0})
print("nDataFrame after Filling Missing Values:")
print(df_fillna)

在上述代码中,我们首先创建了一个示例DataFrame,其中包含了缺失值。然后,我们使用isnull()函数检测缺失值,dropna()函数删除包含缺失值的行,以及fillna()函数填充缺失值,可以根据需要指定填充值。

数据类型转换

在DataFrame中,你可以执行数据类型转换以确保数据的一致性和正确性。以下是一些示例代码和注释,演示如何执行数据类型转换:

import pandas as pd

# 创建一个示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': ['25', '30', '35'],  # 注意,这里的Age是字符串
    'Salary': ['50000', '60000', '75000']  # 同样,Salary也是字符串
}

df = pd.DataFrame(data)

# 查看数据类型
data_types = df.dtypes
print("Data Types Before Conversion:")
print(data_types)

# 将字符串列转换为整数
df['Age'] = df['Age'].astype(int)
df['Salary'] = df['Salary'].astype(int)

# 再次查看数据类型
data_types_after_conversion = df.dtypes
print("nData Types After Conversion:")
print(data_types_after_conversion)

在上述代码中,我们首先创建了一个示例DataFrame,其中包含字符串类型的Age和Salary列。然后,我们使用astype()函数将这两列转换为整数类型。这种类型转换可以确保数据以正确的方式进行计算和分析。

数据合并与连接

在数据分析中,通常需要将不同的数据集合并或连接在一起,以便进行更全面的分析。pandas提供了多种方法来执行数据合并和连接。以下是一些示例代码和注释,演示如何执行数据合并和连接操作:

import pandas as pd

# 创建两个示例DataFrame
data1 = {
    'ID': [1, 2, 3],
    'Name': ['Alice', 'Bob', 'Charlie']
}

data2 = {
    'ID': [2, 3, 4],
    'Salary': [50000, 60000, 75000]
}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 合并两个DataFrame(基于共同的列)
merged_df = pd.merge(df1, df2, on='ID')
print("Merged DataFrame:")
print(merged_df)

# 连接两个DataFrame(按行或列连接)
concatenated_rows = pd.concat([df1, df2], axis=0)
concatenated_columns = pd.concat([df1, df2], axis=1)
print("nConcatenated DataFrames (Rows):")
print(concatenated_rows)
print("nConcatenated DataFrames (Columns):")
print(concatenated_columns)

在上述代码中,我们首先创建了两个示例DataFrame,然后使用pd.merge()函数将它们合并在一起,通过指定共同的列(这里是'ID'列)。另外,我们使用pd.concat()函数将两个DataFrame按行或列连接在一起。

这些是处理缺失值、数据类型转换以及数据合并和连接的示例。它们是数据分析和数据清洗中的关键操作,可以让你有效地处理和分析数据。

总结

DataFrame是Python中处理和分析数据的核心工具之一。通过本教程,你已经掌握了DataFrame的基本概念、创建方法、数据操作、分组聚合以及数据清洗和处理技巧。这些知识将使你能够更自信地处理各种数据集,从而更好地支持你的项目和决策。

关键词:Python      点击(14)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多Python相关>>>