以下是每个方法及其作用的简要介绍: ","read_csv()",":将 CSV 文件中的数据加载到 Pandas DataFrame 中。","head()",":显示 DataFrame 的前几行。","info()",":提供 DataFrame 的简明摘要,包括列类型和缺失值。","describe()",":生成数字列的描述性统计。","isnull()",":识别数据帧中的缺失数据。","dropna()",":删除缺失数据的行或列。","fillna()",":用指定值替换缺失数据。","groupby()",":根据一列或多列对数据进行分组,并应用聚合函数。","sort_values()",":按一列或多列对 DataFrame 排序。","应用()",":对 DataFrame 的行或列应用自定义函数。","先决条件"," 首先,确保您的计算机上安装了 Python。如果没有,可以从 以下链接下载。
设置好 Python 后,确认是否安装了 Pandas 库。如果没有,可以使用以下命令轻松添加: ","pipinstallpandas"," 我们将使用以下房地产虚拟数据集来举例说明: ","属性 ID","地点","卧室","浴室","价格","平方尺","上市日期","101","纽约","3","2","750000","1800","2023-05-15","102","旧金山","1","850000","1400","2023-06-01","103","洛杉矶","4","2500","2023-04-10","104","芝加哥","650000","1700","105","迈阿密","5","1200000","3500","2023-03-22","106","休斯敦","450000","2000","2023-07-01","十大 Pandas 函数和方法","1. read_csv():将 CSV 文件中的数据加载到 Pandas DataFrame 中。"," 使用 pandas 的第一步是加载数据,为处理或分析做好准备。将数据导入 pandas DataFrame 的最常用方法之一是read_csv()函数。 ","代码示例:","importpandasaspd\n# 将数据集加载到 Pandas DataFrame 中\nfile_path =\"real_estate_listings.csv\" # 替换为实际文件路径\n\n# 创建数据帧\ndf = pd.read_csv(file_path)","作为 pd","pandas.read_csv()","pd.read_csv()"," 首先,我们导入 pandas 库。使用 "," 是开发人员简化代码的常用惯例。例如,不用写 ","我们只需使用 ",",使代码更加简洁易读。 ","read_csv"," 接下来,指定要加载到 Pandas DataFrame 中的 CSV 文件的路径。然后,创建一个变量并使用 "," 方法将文件加载到 DataFrame 中。 ","关键参数:"," 现在,让我们来探讨一下这种方法的一些重要参数: ","分隔符:"," 指定 CSV 文件中使用的分隔符(如 ,,, ;, \\t)。","df= pd.read_csv(file_path, delimiter=',')","index_col",":在我们的表格中,每个物业列表都由\" \"中的 ID 标识。","\"列。为确保 pandas 将此列用作每个属性的唯一标识符,我们可以显式地将其设置为 ID 列。否则,pandas 将自动生成并为每个列表分配自己的 ID 值。","df= pd.read_csv(file_path, index_col='PropertyID')","用量",":如果您的 CSV 文件包含许多列,但您只需要选择其中的几列,pandas 允许您使用特定参数轻松实现这一目标。","df= pd.read_csv(file_path, usecols=['Location','Price','Bedrooms'])","2. head() 和 tail():检查数据","tail()"," 既然数据已经加载到 DataFrame 中,我们就可以开始探索它了。为此,Pandas 提供了两种非常方便的方法: "," 和 ",".这些方法对于快速检查数据集的第一行或最后几行至关重要。 ","head():该方法默认显示数据集的前 5 行。该方法对于验证数据是否已正确加载以及检查数据结构特别有用。","tail():该方法的工作原理与 head() 类似,但显示的是最后几行。它有助于检查数据集的末尾,尤其是在检查数据是否完整或尾部记录是否有缺失值时。","# 查看前 5 行\nprint(df.head())\n# 查看最后 3 行\nprint(df.tail(3))\n"," 输出 ",": ","3. info() - 理解数据帧结构"," info()函数提供 DataFrame 的简明摘要。它包括以下详细信息 ","行数和列数。","列名及其数据类型","每列中的非空值计数。"," 这种方法有助于快速了解数据集的结构,发现缺失值或数据类型不正确等问题。 ","# 获取数据帧的简明摘要\nprint(df.info())"," 上述代码的输出结果如下 ","<class 'pandas.core.frame.DataFrame'>\nRangeIndex: 6 entries, 0 to 5\nData columns (total 7 columns):\n# Column Non-Null Count Dtype \n--- ------ -------------- ----- \n0 PropertyID 6 non-null int64 \n1 Location 6 non-null object\n2 Bedrooms 6 non-null int64 \n3 Bathrooms 6 non-null int64 \n4 Price 5 non-null float64\n5 SquareFootage 6 non-null int64 \n6 ListingDate 5 non-null object\ndtypes: float64(1), int64(4), object(2)\nmemory usage: 464.0+ bytes\n","4. describe():生成统计摘要"," \"(《世界人权宣言》) "," 该方法提供了关键统计指标的快速汇总,如 ","吝啬",", ","标准差","百分位数","等等。默认情况下 "," 可处理数值数据,也可处理分类数据,根据数据类型提供定制的见解。 ",":一个介于 0 和 1 之间的数字列表,用于指定要返回的百分位数。默认值为 \"无\",即返回第 25、50 和 75 百分位数。更多信息 ","这里",".","包括",":要包含在摘要中的数据类型列表。可以指定 int、float、object(字符串)等数据类型。默认值为 \"无\",即包含所有数字类型。","排除","无",":要从摘要中排除的数据类型列表。该参数也是 "," 默认情况下,不排除任何类型。","打印(df.describe())"," 代码输出如下 "," PropertyID位置 卧室 ... 价格 平方英尺 上市日期\n计数 6.000000 6 6.000000... 5.000000e+00 6.000000 5\nuniqueNaN6NaN ... NaN NaN5\n顶部NaN 纽约 NaN ... NaN NaN2023-05-15\nfreqNaN1NaN ... NaN NaN1\n平均值 103.500000NaN 3.500000... 7.800000e+05 2150.000000NaN\n1.870829NaN1.048809...2.774887e+05 755.645419NaN\n最小值 101.000000NaN 2.000000... 4.500000e+05 1400.000000NaN\n25% 102.250000NaN 3.000000... 6.500000e+05 1725.000000NaN\n50% 103.500000NaN 3.500000... 7.500000e+05 1900.000000NaN\n75% 104.750000NaN 4.000000... 8.500000e+05 2375.000000NaN\n最大值 106.000000NaN 5.000000... 1.200000e+06 3500.000000NaN\n","各项统计数据的解释","计数 = 6","例如 "," 对于 ","表示所有行都有有效数据。","计数",":每列不遗漏条目的数量。","平均值 = 3.5","表明平均 ","3.5 个卧室"," 每处房产。","平均值",":列的平均值。","std = 1.048809","这意味着卧室数量的差异不大。","标准",":标准偏差:标准偏差显示数值与平均值的差值。","最小值 = 2","最大值 = 5","最小/最大",":最小值和最大值。","25%",":25%的数据低于该值(第一四分位数)。","50%",":中位值。","75%",":75%的数据低于该值(第三四分位数)。","25%、50%、75%(四分位数)",":表示数据的分布:","isnull():识别缺失数据","正确","假的","和()"," 函数可帮助识别 DataFrame 中的缺失数据。它返回一个与原始数据形状相同的 DataFrame,并带有 "," 数据缺失 "," 和 "," 否则。它通常与其他功能一起使用,如 "," 来计算各列或各行的缺失值。 ","# 识别缺失值\nprint(df.isnull())\n# 统计每列的缺失值\nprint(df.isnull().sum())\n","df.isnull()"," 输出: "," 属性 ID 地点 卧室 浴室 价格 平方英尺 上市日期\n0 假 假 假 假 假 假 错误\n1 假 假 假 假 假 伪 伪\n2 假 假 假 假 真 真 错误\n3 假 假 假 假 假 假 真\n4 假 假 错误 错误 假 假 错误\n5 假 假 假 假 假 假 假\n","df.isnull().sum()","物业编号 0\n位置 0\n卧室 0\n浴室 0\n价格 1\n平方英尺 0\n上市日期 1\ndtype: int64\n","6. dropna():删除缺失数据"," 功能移除 ","行数"," 或 ","专栏"," 有缺失数据 "," 的数据。默认情况下,它会删除有任何缺失值的行。您可以自定义其行为,以便只删除列,或删除全部或特定子集值缺失的行/列 ","#删除 有 缺失 值的记录\ndf_dropped_rows = df.dropna()\nprint(df_dropped_rows)\n\n#删除 缺失 值的列\ndf_dropped_columns = df.dropna(axis=1)\nprint(df_dropped_columns)\n"," 下面是删除所有 "," 载有 "," 价值观 "," 下面是数据帧,其中包含 "," 值删除。 ","7. fillna():替换缺失数据"," 函数替换缺失数据 "," 的指定值。pandas "," 方法可以有效地处理和删除 DataFrame 中的空值,而 "," 该方法为替换 "," 值与您选择的指定值进行比较。这种方法提供了一种管理缺失数据的灵活方法,使您可以使用一个固定值(即 ","中位數","模式","或其他计算统计数据。 ","# 用平均价格填补 \"价格 \"列中的缺失值 df['Price'] = \ndf['Price'].fillna(df['Price'].mean()) \nprint(df)"," 代码的输出显示 "," 值已成功替换为平均价格。 ","780000"," 列还包含一个 "," 值。我们不需要进行计算,只需使用一个占位符,如\"","未知",".下面介绍如何做到这一点; ","# 使用占位符填充 \"ListingDate \"列中的缺失值\ndf['ListingDate'] =df['ListingDate'].fillna('Unknown')\nprint(df)\n"," 数据帧现在看起来如下: ","8. groupby():分组和汇总数据"," Pandas 中的groupby()函数是一个功能强大的通用工具,可根据一列或多列将 DataFrame 分成若干组,从而实现高效的数据分析和聚合。
它的工作原理是分割-应用-合并:
,首先将数据分割成组;
,然后对每个组应用指定的函数;
,最后将结果合并成一个新的 DataFrame。
这种精简的方法简化了复杂的数据处理任务,提高了分析效率。 "," 例如,您可以按地点计算房产的平均价格,或按卧室类别统计房源数量。 ","#按 \"地点 \" 分组 并计算平均价格\navg_price_by_location = df.groupby('Location')['Price'].mean()\nprint(avg_price_by_location)\n#按 \"卧室 \" 分组 并计算总面积\ntotal_sqft_by_bedrooms = df.groupby('Bedrooms')['SquareFootage'].sum()\nprint(total_sqft_by_bedrooms)\n#按多列 分组 并计算计数\ncount_by_location_bedrooms = df.groupby(['Location','Bedrooms']).size()\nprint(count_by_location_bedrooms)\n","各地平均价格:","地点\n芝加哥 650000.0\n休斯顿 450000.0\n洛杉矶\n迈阿密 1200000.0\n纽约 750000.0\n旧金山 850000.0\n名称:价格, 类型: float64\n","卧室总面积:","卧室\n2 1400\n3 3500\n4 4500\n5 3500\n","按地点和卧室计数:","地点卧室\n芝加哥 3 1\n休斯顿 4 1\n洛杉矶 4 1\n迈阿密 5 1\n纽约 3 1\n旧金山 2 1\ndtype: int64\n","9. sort_values():对数据排序"," sort_values()函数用于按一列或多列对 DataFrame 进行升序或降序排序。排序对于数据排序、识别极端值(如价格最高的房产)或简单地组织数据集以提高可读性至关重要。 ","# 按 \"价格 \"降序排序\ndf_sorted_by_price = df.sort_values(by='Price',ascending=False)\nprint(df_sorted_by_price)\n# 按 \"地点 \"升序排序\ndf_sorted_by_location = df.sort_values(by='Location')\nprint(df_sorted_by_location)\n# 按多列排序:首先按 \"卧室\"(升序),然后按 \"价格\"(降序)。\ndf_sorted_by_bedrooms_price = df.sort_values(by=['Bedrooms','Price'], ascending=[True,False])\nprint(df_sorted_by_bedrooms_price)\n","按价格排序(降序):"," PropertyID位置 卧室 ... 价格 平方英尺 上市日期\n4 105迈阿密5... 1200000.0 3500 2023-03-22\n1 102旧金山2... 850000.0 1400 2023-06-01\n0 101纽约3... 750000.0 1800 2023-05-15\n3 104芝加哥3... 650000.0 1700NaN\n5 106休斯顿4... 450000.0 2000 2023-07-01\n2 103洛杉矶4... 无2500 2023-04-10","按地点排序(升序):","[6 行 x 7 列]\n 物业编号 位置 卧室 ... 价格 平方英尺 上市日期\n3 104 芝加哥 3 . .. 650000.0 1700 NaN\n5 106 Houston 4 . .. 450000.0 2000 2023-07-01\n2 103 洛杉矶 4 . .. 无 2500 2023-04-10\n4 105 迈阿密 5 . .. 1200000.0 3500 2023-03-22\n0 101 纽约 3 . .. 750000.0 1800 2023-05-15\n1 102 旧金山 2 . .. 850000.0 1400 2023-06-01\n","按卧室(升序)和价格(降序)排序:"," PropertyID位置 卧室 ... 价格 平方英尺 上市日期\n1 102旧金山2... 850000.0 1400 2023-06-01\n0 101纽约3... 750000.0 1800 2023-05-15\n3 104芝加哥3... 650000.0 1700NaN\n5 106休斯顿4... 450000.0 2000 2023-07-01\n2 103洛杉矶4... 无2500 2023-04-10\n4 105迈阿密5... 1200000.0 3500 2023-03-22\n","10. apply():对数据应用自定义函数"," 通过apply()函数,可以对 DataFrame 中的行或列应用自定义函数。这是一种功能强大的方法,可用于执行超出 Pandas 内置函数范围的元素变换、计算或条件操作。 "," 举个例子,我们要创建一个新列来计算每平方英尺的价格。 ","#定义一个自定义函数 来计算每平方英尺的价格\ndef price_per_sqft(price, sqft):\n returnprice/sqft if sqft!= 0 else 0\n\n# 应用自定义函数 创建 新列\ndf['PricePerSqFt']=df.apply(lambdarow: price_per_sqft(row['Price'],row['SquareFootage']),axis=1)\nprint(df)\n","以下是上述代码的输出结果:"," PropertyID位置 卧室 ... 平方英尺 上市日期 每平方英尺价格\n0 101New York3... 1800 2023-05-15 416.666667\n1 102旧金山2... 1400 2023-06-01 607.142857\n2 103洛杉矶4...2500 2023-04-10无\n3 104芝加哥3... 1700NaN382.352941\n4 105迈阿密5... 3500 2023-03-22 342.857143\n5 106休斯顿4...2000 2023-07-01 225.000000\n"," 另一个例子是将地点名称转换为大写字母; ","# 应用转换,将所有地点名称大写\ndf['Location'] =df['Location'].apply(lambda x: x.upper())\nprint(df)\n","这就是它的外观:"," PropertyID位置 卧室 ... 价格 平方英尺 上市日期\n0 101New York3... 750000.0 1800 2023-05-15\n1 102旧金山2... 850000.0 1400 2023-06-01\n2 103洛杉矶4... 无2500 2023-04-10\n3 104芝加哥3... 650000.0 1700NaN\n4 105迈阿密5... 1200000.0 3500 2023-03-22\n5 106休斯顿4... 450000.0 2000 2023-07-01","结论"," 在本指南中,我们探讨了用于数据分析的 10 个基本 Pandas 函数,从使用 "," 使用以下方法对其进行清洁和改造 ","和 ",".这些功能构成了任何数据分析工作流程的基础,使您能够有效地清理、处理和汇总数据集。掌握了它们,您就能自信地应对现实世界中的数据挑战。今天就开始练习,探索这些工具如何简化你的分析任务! ","由ProxyScrape","在此键入搜索...","最新文章","How to Handle Pagination in Web Scraping using Python","Exporting Web Scraped Data to CSV, JSON, and Databases ","使用 Parsel 的 Python 网络解析入门","使用 PHP 编程语言进行网络抓取","光proxyscrape 徽标","https://proxyscrape.com/static/light_text_logo.svg","需要代理帮助或
希望提供帮助?以下是您的选择:","Crunchbase","关于我们","感谢大家的大力支持!","快速链接","联属会员计划","高级","ProxyScrape 高级试用","代理类型","代理国家","代理用例","重要","Cookie 政策","免责声明","隐私政策","条款和条件","社交媒体","在 Facebook 上","LinkedIn","推特","Quora","电报","不和谐音","\n © Copyright 2025 -Thib BV| Brugstraat 18 | 2812 Mechelen | Belgium | VAT BE 0749 716 760\n"]}
Pandas 是数据分析师和 Python 程序员进入数据处理和分析领域的首选库。其直观的语法和强大的数据结构使处理庞大的数据集不仅易于管理,而且高效。无论您是导入 CSV 文件、清理杂乱的数据集还是分析数据趋势,Pandas 都能为您提供所需的工具。
如果您刚刚开始 Pandas 学习之旅,这篇文章将向您介绍每个初学者都应掌握的10 个基本函数和方法。这些函数将帮助您轻松加载、检查、清理和分析数据。
以下是每个方法及其作用的简要介绍:
read_csv()
:将 CSV 文件中的数据加载到 Pandas DataFrame 中。head()
:显示 DataFrame 的前几行。info()
:提供 DataFrame 的简明摘要,包括列类型和缺失值。describe()
:生成数字列的描述性统计。isnull()
:识别数据帧中的缺失数据。dropna()
:删除缺失数据的行或列。fillna()
:用指定值替换缺失数据。groupby()
:根据一列或多列对数据进行分组,并应用聚合函数。sort_values()
:按一列或多列对 DataFrame 排序。应用()
:对 DataFrame 的行或列应用自定义函数。 首先,确保您的计算机上安装了 Python。如果没有,可以从 以下链接下载。
设置好 Python 后,确认是否安装了 Pandas 库。如果没有,可以使用以下命令轻松添加:
pipinstallpandas
我们将使用以下房地产虚拟数据集来举例说明:
属性 ID | 地点 | 卧室 | 浴室 | 价格 | 平方尺 | 上市日期 |
101 | 纽约 | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | 旧金山 | 2 | 1 | 850000 | 1400 | 2023-06-01 |
103 | 洛杉矶 | 4 | 3 | 2500 | 2023-04-10 | |
104 | 芝加哥 | 3 | 2 | 650000 | 1700 | |
105 | 迈阿密 | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | 休斯敦 | 4 | 3 | 450000 | 2000 | 2023-07-01 |
使用 pandas 的第一步是加载数据,为处理或分析做好准备。将数据导入 pandas DataFrame 的最常用方法之一是read_csv()函数。
importpandasaspd
# 将数据集加载到 Pandas DataFrame 中
file_path ="real_estate_listings.csv" # 替换为实际文件路径
# 创建数据帧
df = pd.read_csv(file_path)
首先,我们导入 pandas 库。使用 作为 pd
是开发人员简化代码的常用惯例。例如,不用写 pandas.read_csv()
我们只需使用 pd.read_csv()
,使代码更加简洁易读。
接下来,指定要加载到 Pandas DataFrame 中的 CSV 文件的路径。然后,创建一个变量并使用 read_csv
方法将文件加载到 DataFrame 中。
现在,让我们来探讨一下这种方法的一些重要参数:
分隔符:
指定 CSV 文件中使用的分隔符(如 ,,, ;, \t)。df= pd.read_csv(file_path, delimiter=',')
index_col
:在我们的表格中,每个物业列表都由" "中的 ID 标识。属性 ID"列。为确保 pandas 将此列用作每个属性的唯一标识符,我们可以显式地将其设置为 ID 列。否则,pandas 将自动生成并为每个列表分配自己的 ID 值。df= pd.read_csv(file_path, index_col='PropertyID')
用量
:如果您的 CSV 文件包含许多列,但您只需要选择其中的几列,pandas 允许您使用特定参数轻松实现这一目标。df= pd.read_csv(file_path, usecols=['Location','Price','Bedrooms'])
既然数据已经加载到 DataFrame 中,我们就可以开始探索它了。为此,Pandas 提供了两种非常方便的方法: head()
和 tail()
.这些方法对于快速检查数据集的第一行或最后几行至关重要。
# 查看前 5 行
print(df.head())
# 查看最后 3 行
print(df.tail(3))
输出 head()
:
属性 ID | 地点 | 卧室 | 浴室 | 价格 | 平方尺 | 上市日期 |
101 | 纽约 | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | 旧金山 | 2 | 1 | 850000 | 1400 | 2023-06-01 |
103 | 洛杉矶 | 4 | 3 | 2500 | 2023-04-10 | |
104 | 芝加哥 | 3 | 2 | 650000 | 1700 | |
105 | 迈阿密 | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
输出 tail()
:
属性 ID | 地点 | 卧室 | 浴室 | 价格 | 平方尺 | 上市日期 |
104 | 芝加哥 | 3 | 2 | 650000 | 1700 | |
105 | 迈阿密 | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | 休斯敦 | 4 | 3 | 450000 | 2000 | 2023-07-01 |
info()函数提供 DataFrame 的简明摘要。它包括以下详细信息
这种方法有助于快速了解数据集的结构,发现缺失值或数据类型不正确等问题。
# 获取数据帧的简明摘要
print(df.info())
上述代码的输出结果如下
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PropertyID 6 non-null int64
1 Location 6 non-null object
2 Bedrooms 6 non-null int64
3 Bathrooms 6 non-null int64
4 Price 5 non-null float64
5 SquareFootage 6 non-null int64
6 ListingDate 5 non-null object
dtypes: float64(1), int64(4), object(2)
memory usage: 464.0+ bytes
"(《世界人权宣言》) describe() 该方法提供了关键统计指标的快速汇总,如 吝啬, 标准差, 百分位数等等。默认情况下 describe()
可处理数值数据,也可处理分类数据,根据数据类型提供定制的见解。
百分位数
:一个介于 0 和 1 之间的数字列表,用于指定要返回的百分位数。默认值为 "无",即返回第 25、50 和 75 百分位数。更多信息 这里.包括
:要包含在摘要中的数据类型列表。可以指定 int、float、object(字符串)等数据类型。默认值为 "无",即包含所有数字类型。排除
:要从摘要中排除的数据类型列表。该参数也是 无
默认情况下,不排除任何类型。打印(df.describe())
代码输出如下
PropertyID位置 卧室 ... 价格 平方英尺 上市日期
计数 6.000000 6 6.000000... 5.000000e+00 6.000000 5
uniqueNaN6NaN ... NaN NaN5
顶部NaN 纽约 NaN ... NaN NaN2023-05-15
freqNaN1NaN ... NaN NaN1
平均值 103.500000NaN 3.500000... 7.800000e+05 2150.000000NaN
1.870829NaN1.048809...2.774887e+05 755.645419NaN
最小值 101.000000NaN 2.000000... 4.500000e+05 1400.000000NaN
25% 102.250000NaN 3.000000... 6.500000e+05 1725.000000NaN
50% 103.500000NaN 3.500000... 7.500000e+05 1900.000000NaN
75% 104.750000NaN 4.000000... 8.500000e+05 2375.000000NaN
最大值 106.000000NaN 5.000000... 1.200000e+06 3500.000000NaN
计数 = 6
对于 卧室表示所有行都有有效数据。平均值 = 3.5
对于 卧室表明平均 3.5 个卧室 每处房产。std = 1.048809
对于 卧室这意味着卧室数量的差异不大。最小值 = 2
和 最大值 = 5
对于 卧室.25%
:25%的数据低于该值(第一四分位数)。50%
:中位值。75%
:75%的数据低于该值(第三四分位数)。 "(《世界人权宣言》) isnull() 函数可帮助识别 DataFrame 中的缺失数据。它返回一个与原始数据形状相同的 DataFrame,并带有 正确
数据缺失 无
和 假的
否则。它通常与其他功能一起使用,如 和()
来计算各列或各行的缺失值。
# 识别缺失值
print(df.isnull())
# 统计每列的缺失值
print(df.isnull().sum())
df.isnull()
输出:
属性 ID 地点 卧室 浴室 价格 平方英尺 上市日期
0 假 假 假 假 假 假 错误
1 假 假 假 假 假 伪 伪
2 假 假 假 假 真 真 错误
3 假 假 假 假 假 假 真
4 假 假 错误 错误 假 假 错误
5 假 假 假 假 假 假 假
df.isnull().sum()
输出:
物业编号 0
位置 0
卧室 0
浴室 0
价格 1
平方英尺 0
上市日期 1
dtype: int64
"(《世界人权宣言》) dropna() 功能移除 行数 或 专栏 有缺失数据 无
的数据。默认情况下,它会删除有任何缺失值的行。您可以自定义其行为,以便只删除列,或删除全部或特定子集值缺失的行/列
#删除 有 缺失 值的记录
df_dropped_rows = df.dropna()
print(df_dropped_rows)
#删除 缺失 值的列
df_dropped_columns = df.dropna(axis=1)
print(df_dropped_columns)
下面是删除所有 行数 载有 无
价值观
属性 ID | 地点 | 卧室 | 浴室 | 价格 | 平方尺 | 上市日期 |
101 | 纽约 | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | 旧金山 | 2 | 1 | 850000 | 1400 | 2023-06-01 |
105 | 迈阿密 | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | 休斯敦 | 4 | 3 | 450000 | 2000 | 2023-07-01 |
下面是数据帧,其中包含 专栏 载有 无
值删除。
属性 ID | 地点 | 卧室 | 浴室 | 平方尺 |
101 | 纽约 | 3 | 2 | 1800 |
102 | 旧金山 | 2 | 1 | 1400 |
103 | 洛杉矶 | 4 | 3 | 2500 |
104 | 芝加哥 | 3 | 2 | 1700 |
105 | 迈阿密 | 5 | 4 | 3500 |
106 | 休斯敦 | 4 | 3 | 2000 |
"(《世界人权宣言》) fillna() 函数替换缺失数据 无
的指定值。pandas dropna()
方法可以有效地处理和删除 DataFrame 中的空值,而 fillna()
该方法为替换 无
值与您选择的指定值进行比较。这种方法提供了一种管理缺失数据的灵活方法,使您可以使用一个固定值(即 吝啬, 中位數, 模式或其他计算统计数据。
# 用平均价格填补 "价格 "列中的缺失值 df['Price'] =
df['Price'].fillna(df['Price'].mean())
print(df)
代码的输出显示 无
值已成功替换为平均价格。
属性 ID | 地点 | 卧室 | 浴室 | 价格 | 平方尺 | 上市日期 |
101 | 纽约 | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | 旧金山 | 2 | 1 | 850000 | 1400 | 2023-06-01 |
103 | 洛杉矶 | 4 | 3 | 780000 | 2500 | 2023-04-10 |
104 | 芝加哥 | 3 | 2 | 650000 | 1700 | 无 |
105 | 迈阿密 | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | 休斯敦 | 4 | 3 | 450000 | 2000 | 2023-07-01 |
"(《世界人权宣言》) 上市日期 列还包含一个 无
值。我们不需要进行计算,只需使用一个占位符,如"未知.下面介绍如何做到这一点;
# 使用占位符填充 "ListingDate "列中的缺失值
df['ListingDate'] =df['ListingDate'].fillna('Unknown')
print(df)
数据帧现在看起来如下:
属性 ID | 地点 | 卧室 | 浴室 | 价格 | 平方尺 | 上市日期 |
101 | 纽约 | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | 旧金山 | 2 | 1 | 无 | 1400 | 2023-06-01 |
103 | 洛杉矶 | 4 | 3 | 780000 | 2500 | 2023-04-10 |
104 | 芝加哥 | 3 | 2 | 650000 | 1700 | 未知 |
105 | 迈阿密 | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | 休斯敦 | 4 | 3 | 450000 | 2000 | 2023-07-01 |
Pandas 中的groupby()函数是一个功能强大的通用工具,可根据一列或多列将 DataFrame 分成若干组,从而实现高效的数据分析和聚合。
它的工作原理是分割-应用-合并:
,首先将数据分割成组;
,然后对每个组应用指定的函数;
,最后将结果合并成一个新的 DataFrame。
这种精简的方法简化了复杂的数据处理任务,提高了分析效率。
例如,您可以按地点计算房产的平均价格,或按卧室类别统计房源数量。
#按 "地点 " 分组 并计算平均价格
avg_price_by_location = df.groupby('Location')['Price'].mean()
print(avg_price_by_location)
#按 "卧室 " 分组 并计算总面积
total_sqft_by_bedrooms = df.groupby('Bedrooms')['SquareFootage'].sum()
print(total_sqft_by_bedrooms)
#按多列 分组 并计算计数
count_by_location_bedrooms = df.groupby(['Location','Bedrooms']).size()
print(count_by_location_bedrooms)
各地平均价格:
地点
芝加哥 650000.0
休斯顿 450000.0
洛杉矶
迈阿密 1200000.0
纽约 750000.0
旧金山 850000.0
名称:价格, 类型: float64
卧室总面积:
卧室
2 1400
3 3500
4 4500
5 3500
按地点和卧室计数:
地点卧室
芝加哥 3 1
休斯顿 4 1
洛杉矶 4 1
迈阿密 5 1
纽约 3 1
旧金山 2 1
dtype: int64
sort_values()函数用于按一列或多列对 DataFrame 进行升序或降序排序。排序对于数据排序、识别极端值(如价格最高的房产)或简单地组织数据集以提高可读性至关重要。
# 按 "价格 "降序排序
df_sorted_by_price = df.sort_values(by='Price',ascending=False)
print(df_sorted_by_price)
# 按 "地点 "升序排序
df_sorted_by_location = df.sort_values(by='Location')
print(df_sorted_by_location)
# 按多列排序:首先按 "卧室"(升序),然后按 "价格"(降序)。
df_sorted_by_bedrooms_price = df.sort_values(by=['Bedrooms','Price'], ascending=[True,False])
print(df_sorted_by_bedrooms_price)
按价格排序(降序):
PropertyID位置 卧室 ... 价格 平方英尺 上市日期
4 105迈阿密5... 1200000.0 3500 2023-03-22
1 102旧金山2... 850000.0 1400 2023-06-01
0 101纽约3... 750000.0 1800 2023-05-15
3 104芝加哥3... 650000.0 1700NaN
5 106休斯顿4... 450000.0 2000 2023-07-01
2 103洛杉矶4... 无2500 2023-04-10
按地点排序(升序):
[6 行 x 7 列]
物业编号 位置 卧室 ... 价格 平方英尺 上市日期
3 104 芝加哥 3 . .. 650000.0 1700 NaN
5 106 Houston 4 . .. 450000.0 2000 2023-07-01
2 103 洛杉矶 4 . .. 无 2500 2023-04-10
4 105 迈阿密 5 . .. 1200000.0 3500 2023-03-22
0 101 纽约 3 . .. 750000.0 1800 2023-05-15
1 102 旧金山 2 . .. 850000.0 1400 2023-06-01
按卧室(升序)和价格(降序)排序:
PropertyID位置 卧室 ... 价格 平方英尺 上市日期
1 102旧金山2... 850000.0 1400 2023-06-01
0 101纽约3... 750000.0 1800 2023-05-15
3 104芝加哥3... 650000.0 1700NaN
5 106休斯顿4... 450000.0 2000 2023-07-01
2 103洛杉矶4... 无2500 2023-04-10
4 105迈阿密5... 1200000.0 3500 2023-03-22
通过apply()函数,可以对 DataFrame 中的行或列应用自定义函数。这是一种功能强大的方法,可用于执行超出 Pandas 内置函数范围的元素变换、计算或条件操作。
举个例子,我们要创建一个新列来计算每平方英尺的价格。
#定义一个自定义函数 来计算每平方英尺的价格
def price_per_sqft(price, sqft):
returnprice/sqft if sqft!= 0 else 0
# 应用自定义函数 创建 新列
df['PricePerSqFt']=df.apply(lambdarow: price_per_sqft(row['Price'],row['SquareFootage']),axis=1)
print(df)
以下是上述代码的输出结果:
PropertyID位置 卧室 ... 平方英尺 上市日期 每平方英尺价格
0 101New York3... 1800 2023-05-15 416.666667
1 102旧金山2... 1400 2023-06-01 607.142857
2 103洛杉矶4...2500 2023-04-10无
3 104芝加哥3... 1700NaN382.352941
4 105迈阿密5... 3500 2023-03-22 342.857143
5 106休斯顿4...2000 2023-07-01 225.000000
另一个例子是将地点名称转换为大写字母;
# 应用转换,将所有地点名称大写
df['Location'] =df['Location'].apply(lambda x: x.upper())
print(df)
这就是它的外观:
PropertyID位置 卧室 ... 价格 平方英尺 上市日期
0 101New York3... 750000.0 1800 2023-05-15
1 102旧金山2... 850000.0 1400 2023-06-01
2 103洛杉矶4... 无2500 2023-04-10
3 104芝加哥3... 650000.0 1700NaN
4 105迈阿密5... 1200000.0 3500 2023-03-22
5 106休斯顿4... 450000.0 2000 2023-07-01
在本指南中,我们探讨了用于数据分析的 10 个基本 Pandas 函数,从使用
和 read_csv()
使用以下方法对其进行清洁和改造 info()
, isnull()
和 fillna()
.这些功能构成了任何数据分析工作流程的基础,使您能够有效地清理、处理和汇总数据集。掌握了它们,您就能自信地应对现实世界中的数据挑战。今天就开始练习,探索这些工具如何简化你的分析任务! 应用()