Products
GG网络技术分享 2025-03-18 16:09 2
Pandas是一个强大的开源数据分析和操作库。它可以帮助你对数据进行各种操作,并生成有关它的不同报告。我将把这篇文章分成两篇
在开始之前,确保你已经安装了Pandas。如果没有,你可以使用以下命令下载它。
如果你使用的是Anacondacondainstall-c conda-forge pandas使用pip安装Pandaspipinstallpandas导入pandasimportpandasaspd
在这个练习中,我将使用著名的泰坦尼克号数据集。我建议你从Github下载数据和notebook,将其复制到你的环境中:https://github.com/ankitgoel1602/data-science/tree/master/data-analysis/pandas
有关数据的更多详细信息,请参阅Kaggle:https://www.kaggle.com/c/titanic/data?select=train.csv。
让我们开始,我试图保持数据分析的一般流程,比如从读取数据开始,然后在数据分析过程中经历不同的步骤。
任何数据分析的起点都是获取数据集。pandas提供不同的函数来读取不同格式的数据。最常用的是
这允许你读取CSV文件。
pd.read_csv(path_to_your_csv_file.csv)
panda提供了不同的选项来配置列名、数据类型或要读取的行数。查看Pandas read_csv API了解更多详细信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html。
这允许你读取Excel文件。
pd.read_excel(path_to_your_excel_file.xlsx)
与CSV一样,Pandas为read_excel提供了一组丰富的选项,允许你在excel中读取特定的工作表名称、数据类型或要读取的行数。查看Pandas read_excel API了解更多详细信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html
Pandas支持很多其他数据类型。如果你正在使用其他数据类型,请查看Pandas文档:https://pandas.pydata.org/pandas-docs/stable/reference/io.html
读取泰坦尼克号数据集,我们将在这里使用read_csv命令
你可以从提供的Github链接获取它。将Titanic数据集加载到titanic_data中titanic_data= pd.read_csv(titanic_train.csv)
这将创建一个Pandas数据帧(如表),并将其存储到titanic_data中。
接下来,我们将了解如何获取有关加载的数据的更多详细信息。
一旦我们加载了数据,我们想回顾一下。panda提供了不同的api,我们可以使用它们来探索数据。
这类似于SQL中的TOP命令,从数据帧的开始给我们提供前n条记录。
从数据帧中选择前5(n=5)条记录titanic_data.head(5)
这给了我们数据帧末尾的n条记录。
从数据帧中选择最后5条(n=5)条记录titanitc_data.tail(5)
这将从数据中随机获取n个记录。注意-此命令在不同运行时的输出可能不同。
titanic_data.sample(5)
一旦我们有了数据,我们就需要知道我们要处理的行或列的数量,而Pandas的shape API提供的正是这些。让我们看看
dataframe的形状,注意结尾没有括号,因为它是dataframe的属性titanic_data.shape(891,12)
让我们先看看这个的输出
titanic_data.info()
正如你所看到的,info提供了一个很好的数据摘要,让我们一个一个地了解它。
这给了我们关于数据集的统计数据。如你所见,我们的数据帧如下所示
如你所见,它为每一列提供了许多信息,如记录计数(不计算丢失的记录,如年龄)、平均值、标准差、最小值和不同分位数百分比。默认情况下,此命令提供有关数值数据类型(如int或float)的信息。要获取object列的统计信息,我们可以运行
显示有关对象列的统计信息titanic_data.describe(include=[O])
如果你注意到,我们在describe API中添加了include参数,它是一个列表,我们可以传递多个值,比如-
与include类似,我们也可以使用exclude,它将在计算统计时排除列类型。如果你对更多细节感兴趣,请参阅Pandas文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html。
这些都是非常有用的函数,可以帮助我们选择数据。使用这些我们可以选择数据的任何部分。为了更好地理解它,让我们更改数据的索引(如果你不理解,请不要担心,我将在第2部分中讨论)。
将数据帧的索引从RangeIndex更改为Ticket值titanic_ticket_index= titanic_data.set_index(Ticket)
这将根据标签(即列和行的名称)选择数据。例如,在上面的数据中,行标签类似于A/5 21171, PC17599, 113803,列标签类似于PassengerId, Survived, Sex。loc的一般语法是-
dataframe_name.loc[row_labels, column_labels(optional)]
行标签和列标签可以采用不同的值。让我们看一些例子来更好地理解它。
选择单行
输入你想要的行的标签,即,如果我们想选择Ticket,其中的值是A/5 21171。
注意我们需要使用[]方括号这将返回与名称匹配的行的数据。titanic_ticket_index.loc[A/5 21171]
选择多行
很多时候,我们需要选择多行,以便进一步分析。.loc API可以获取要选择的行标签列表,即。
或者类似的
我们可以提供start_label:end_label这里我们选择标签为PC17599到373450的行titanic_ticket_index.loc[PC 17599:373450]
注意-如果多行具有相同的标签,这将不起作用。
选择单列
这与我们选择行的方式类似,但是在选择列时,我们需要告诉Pandas我们要选择的行。我们可以用:代替行标签,这意味着我们要选择所有行。
为所有行选择列。titanic_ticket_index.loc[:,Embarked]
选择多个列
与我们对多行所做的类似,只需要告诉Pandas我们正在选择哪些行。
为所有行选择Sex,Age,Fare,Embarked列 .titanic_ticket_index.loc[:,[Sex,Age,Fare,Embarked]]
或者类似的
我们可以提供start_label:end_label在这里,我们选择的列为 label Sex 到 Embarkedtitanic_ticket_index.loc[:,Sex:Embarked]
选择特定的行和列
iloc()
这与loc类似,但基于索引而不是标签选择行和列。与标签不同的是,索引总是从0开始,到第7行的数目是1,列的索引总是从0到第1列。
让我们看一个例子
选择特定的行和列:示例2对于列和行我们都可以用start_label:end_label选择第3至第6行和第1至第4列结束索引应比所需的行或列大1titanic_ticket_index.iloc[3:7, 1:5]
在这里,我们没有像对loc那样查看示例。如果你想知道我们是如何使用iloc实现同样的结果的,你可以参考Github:https://github.com/ankitgoel1602/data-science/blob/master/data-analysis/pandas/pandas_basic_functions_overview.ipynb
Value_counts为我们提供列中唯一值的计数,这对于了解以下信息非常有用
Sex列的值计数。titanic_data[Sex].value_counts()输出male577female314Name:Sex,dtype:int64
如你所见,我们的数据集包含了更多的男性。我们甚至可以将其标准化以查看值之间的分布。
为性别列计数并标准化titanic_data[Sex].value_counts(normalize=True)输出male0.647587female0.352413Name:Sex,dtype:float64
这意味着,在我们的数据集中,男性与女性的比例约为65:35。
通常,我们使用难以分析的大型数据集。在这种情况下,策略是过滤不同条件下的数据并对其进行分析。我们只需使用Pandas查询API的一行代码就可以做到这一点。
让我们举几个例子来更好地理解它。
选择年龄
Demand feedback