Python基础:DF的用法

Python基础:DF的用法

首页卡牌对战代号DF更新时间:2024-05-01

知识星球:写代码那些事

如果你有收获|欢迎|点赞|关注|转发

这里会定期更新|大厂的开发|架构|方案设计

这里也会更新|如何摸鱼|抓虾

欢迎来到写代码那些事 !数据是现代应用程序的核心,而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的基本概念、创建方法、数据操作、分组聚合以及数据清洗和处理技巧。这些知识将使你能够更自信地处理各种数据集,从而更好地支持你的项目和决策。



,
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved