数据探索是数据分析的起点,它帮助了解数据集的内容和缺失部分。掌握Pandas的不同函数对于及时完成分析至关重要。以下是覆盖80%数据探索任务的21个顶级Pandas函数,包括获取数据集概览、统计摘要、数据子集选择、识别和处理缺失值以及修改数据集的方法。
为了更好地理解这些函数,创建了一个名为“Dummy_Sales_Data”的示例数据集,可以在GitHub仓库中免费获取,并用于其他实践项目。
import pandas as pd
df = pd.read_csv("Dummy_Sales_Data_v1.csv")
这是一个简单的9999 x 12数据集,是在文章“Faker: 一个神奇且极其有用的Python库”中创建的。可以在阅读结束时下载一个包含所有这些示例的完整笔记本!
df.head() 此函数帮助获取数据集的前几行,默认返回前5行。可以通过在df.head()中指定所需行数来改变这个数字。例如,如果想检索数据集的前7行,可以如下操作:
df.head(7)
df.tail() 此函数帮助获取数据集的最后几行,默认返回最后5行,与.head()类似,可以在df.tail()中指定所需行数。例如,如果想检索数据集的最后3行,可以如下操作:
df.tail(3)
df.sample() 此函数用于从数据集中随机选择一行、一列或两者。df.sample()接受7个可选参数,这意味着这个函数可以在不使用任何参数的情况下运行。
df.sample()
df.info() 此函数返回DataFrame的快速摘要,包括列名及其相应的数据类型、缺失值和DataFrame的内存消耗等信息。
df.info()
理想情况下,这个函数涵盖了可以通过df.dtypes、df.columns、df.shape等单独方法检索的所有信息。
df.describe() 此函数返回数据的描述性统计信息。这包括数值列的最小值、最大值、均值(集中趋势)、标准差(离散度)以及数据中所有非空值的计数。
df.describe()
默认情况下,描述性统计信息是为所有数值列生成的。
df.query() 此函数用于根据表达式查询DataFrame。表达式可以是一个简单的单一条件,也可以是多个条件的组合。例如,如果想检索df中数量超过95的所有行,只需将此条件作为表达式传递,如下所示:
df.query("Quantity > 95")
df.loc 此函数是DataFrame的属性,返回由标签或名称标识的行和列组。因此,可以如下访问行和列的组合:
df.loc[100,'Sales_Manager']
df.iloc 此函数再次是DataFrame的属性,返回与df.loc相同的输出,但使用行和列号代替它们的标签。
df.iloc[[100, 200], [6,3]]
df.unique() 此函数返回列或系列中的唯一值列表。它不应用于完整的DataFrame,而只作用于选定的单个列。
df["Sales_Manager"].unique()
df.nunique() 此方法返回每列中唯一记录的数量。与前一个函数类似,df.nunique()可以用于单个列,如下所示:
df["Sales_Manager"].nunique()
df.isnull() 此函数帮助检查数据中哪些行和列有缺失值。从df.info()中已经知道哪些列有缺失值。df.isnull()以布尔形式返回输出——True和False——对于所有行中的所有列。
df.isnull()
df.fillna() 此函数用于用用户定义的值替换df中的缺失值或NaN。df.fillna()接受1个必需和5个可选参数。
df2.fillna("MissingInfo")
df.sort_values() 此函数有助于根据指定列对整个DataFrame进行升序或降序排列。它接受正好1个必需和5个可选参数。
df.sort_values("Quantity")
df.value_counts() 此函数返回一列中值出现的次数。因此,需要将特定列名传递给此函数。
df.value_counts("Sales_Manager")
df.nlargest() 此函数有助于快速从DataFrame的特定列中获取几个最大值以及包含该值的所有行。
df.nlargest(10, "Delivery_Time(Days)")
df.nsmallest() 类似于前一个函数,df.nsmallest()帮助获取数据集中的几个最小值。
df.nsmallest(7, "Shipping_Cost(USD)")
df.copy() 此函数用于一次性复制整个DataFrame。它只包含一个可选参数,可能永远不需要使用它。
df1 = df.iloc[0:10, :].copy()
df.rename() 这是最简单的方法,可以轻松更改选定的列名。只需要传递一个字典,其中键是旧列名,值是新列名。
df1.rename(columns = {"Shipping_Cost(USD)": "Shipping_Cost", "Delivery_Time(Days)":"DeliveryTime_in_Days"}, inplace=True)
df.where() 此函数检查DataFrame中的给定条件,并在条件为False的所有位置用NaN替换值。
df1.where(df1["Status"] == "Not Shipped")
df.drop() 此函数用于从DataFrame中删除指定的行或列。要删除的行通过它们的标签或索引标识,列通过它们的列名标识。
df1.drop("OrderCode", axis=1)
df1.corr()