前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Python 3中安装pandas包和使用数据结构

如何在Python 3中安装pandas包和使用数据结构

原创
作者头像
信姜缘
修改2018-10-12 17:58:13
18.9K0
修改2018-10-12 17:58:13
举报
文章被收录于专栏:云计算教程系列

介绍

Python pandas包用于数据操作和分析,旨在让您以更直观的方式处理标记或关系数据。

基于numpy软件包构建,pandas包括标签,描述性索引,在处理常见数据格式和丢失数据方面特别强大。

pandas软件包提供了电子表格功能,但使用Python处理数据要比使用电子表格快得多,并且证明pandas非常有效。

在本教程中,我们将首先安装pandas,然后让您了解基础数据结构:SeriesDataFrames

安装 pandas

同其它Python包,我们可以使用pip安装pandas

首先,让我们进入我们选择的本地编程环境或基于服务器的编程环境,并在那里安装pandas和它的依赖项:

代码语言:javascript
复制
pip install pandas numpy python-dateutil pytz

您应该收到类似于以下内容的输出:

代码语言:javascript
复制
Successfully installed pandas-0.19.2

如果您希望pandas在Anaconda中安装,可以使用以下命令执行此操作:

代码语言:javascript
复制
conda install pandas

此时,您已经准备好开始使用pandas软件包了。

Series

pandas,Series是一维数组,可以容纳任何数据类型。轴标签统称为索引

让我们在命令行中启动Python解释器,如下所示:

代码语言:javascript
复制
python

在解释器中,将numpypandas包导入您的命名空间:

代码语言:javascript
复制
import numpy as np
import pandas as pd

在我们使用Series之前,让我们来看看它通常是什么样的:

代码语言:javascript
复制
s = pd.Series([data], index=[index])

您可能会注意到数据的结构类似于Python 列表。

没有声明索引

我们将输入整数数据,然后为Series提供name参数,但我们将避免使用index参数来查看pandas如何隐式填充它:

代码语言:javascript
复制
s = pd.Series([0, 1, 4, 9, 16, 25], name='Squares')

现在,让我们打电话给系列,这样我们就可以看到pandas的作用:

代码语言:javascript
复制
s

我们将看到以下输出,左列中的索引,右列中的数据值。列下方是有关系列名称和组成值的数据类型的信息。

代码语言:javascript
复制
0     0
1     1
2     4
3     9
4    16
5    25
Name: Squares, dtype: int64

虽然我们没有提供数组的索引,有一个隐含加入的整数值的05

声明索引

正如上面的语法向我们展示的那样,我们也可以使用显式索引创建Series。我们将使用有关地球海洋平均深度的数据:

代码语言:javascript
复制
avg_ocean_depth = pd.Series([1205, 3646, 3741, 4080, 3270], index=['Arctic',  'Atlantic', 'Indian', 'Pacific', 'Southern'])

在构建系列之后,让我们调用它来查看输出:

代码语言:javascript
复制
avg_ocean_depth
代码语言:javascript
复制
Arctic      1205
Atlantic    3646
Indian      3741
Pacific     4080
Southern    3270
dtype: int64

我们可以看到我们提供的索引在左侧,右侧是值。

索引和切片系列

使用pandasSeries,我们可以通过相应的数字索引来检索值:

代码语言:javascript
复制
avg_ocean_depth[2]
代码语言:javascript
复制
3741

我们还可以按索引号切片来检索值:

代码语言:javascript
复制
avg_ocean_depth[2:4]
代码语言:javascript
复制
Indian     3741
Pacific    4080
dtype: int64

另外,我们可以调用索引的值来返回它对应的值:

代码语言:javascript
复制
avg_ocean_depth['Indian']
代码语言:javascript
复制
3741

我们还可以使用索引的值进行切片以返回相应的值:

代码语言:javascript
复制
avg_ocean_depth['Indian':'Southern']
代码语言:javascript
复制
Indian      3741
Pacific     4080
Southern    3270
dtype: int64

请注意,在最后一个示例中,使用索引名称进行切片时,这两个参数是包容性的而不是独占的。

让我们用quit()退出Python解释器。

用字典初始化的系列

有了pandas,我们也可以用字典数据类型来初始化一个系列。这样,我们不会将索引声明为单独的列表,而是使用内置键作为索引。

让我们创建一个名为ocean.py的文件,并添加以下字典并调用它来打印它。

代码语言:javascript
复制
import numpy as np
import pandas as pd
​
avg_ocean_depth = pd.Series({
                    'Arctic': 1205,
                    'Atlantic': 3646,
                    'Indian': 3741,
                    'Pacific': 4080,
                    'Southern': 3270
})
​
print(avg_ocean_depth)

现在我们可以在命令行上运行该文件:

代码语言:javascript
复制
python ocean.py

我们将收到以下输出:

代码语言:javascript
复制
OutputArctic      1205
Atlantic    3646
Indian      3741
Pacific     4080
Southern    3270
dtype: int64

系列以有条理的方式显示,左侧是索引(由我们的键组成),右侧是一组值。

这将像其他Python字典一样,您可以通过调用键来访问值,我们可以这样做:

代码语言:javascript
复制
...
print(avg_ocean_depth['Indian'])
print(avg_ocean_depth['Atlantic':'Indian'])
代码语言:javascript
复制
3741
Atlantic    3646
Indian      3741
dtype: int64

但是,这些系列现在是Python对象,因此您将无法使用字典功能。

Python词典提供了另一种表单来在pandas中设置Series。

DataFrames

DataFrame是二维标记的数据结构,其具有可由不同数据类型组成的列。

DataFrame类似于电子表格或SQL表。通常,在使用pandasDataFrame 时,DataFrames将是您将使用的最常用对象。

要了解pandasDataFrame的工作原理,让我们设置两个Series,然后将它们传递给DataFrame。第一个系列将是我们之前的avg_ocean_depth系列,第二个max_ocean_depth系列将包含地球上每个海洋最大深度的数据,以米为单位。

代码语言:javascript
复制
import numpy as np
import pandas as pd
​
​
avg_ocean_depth = pd.Series({
                    'Arctic': 1205,
                    'Atlantic': 3646,
                    'Indian': 3741,
                    'Pacific': 4080,
                    'Southern': 3270
})
​
max_ocean_depth = pd.Series({
                    'Arctic': 5567,
                    'Atlantic': 8486,
                    'Indian': 7906,
                    'Pacific': 10803,
                    'Southern': 7075
})

设置这两个系列之后,让我们将DataFrame添加到max_ocean_depth系列下方的文件底部。在我们的示例中,这两个系列都具有相同的索引标签,但如果您使用具有不同标签的Series,则会标记缺失值NaN

这是以我们可以包含列标签的方式构造的,我们将其声明为Series'变量的键。要查看DataFrame的外观,让我们发出一个打印它的调用。

代码语言:javascript
复制
...
max_ocean_depth = pd.Series({
                    'Arctic': 5567,
                    'Atlantic': 8486,
                    'Indian': 7906,
                    'Pacific': 10803,
                    'Southern': 7075
})
​
ocean_depths = pd.DataFrame({
                    'Avg. Depth (m)': avg_ocean_depth,
                    'Max. Depth (m)': max_ocean_depth
})
​
print(ocean_depths)
代码语言:javascript
复制
         Avg. Depth (m)  Max. Depth (m)
Arctic              1205            5567
Atlantic            3646            8486
Indian              3741            7906
Pacific             4080           10803
Southern            3270            7075

输出显示我们的两个列标题以及每个列标题下的数字数据,字典键中的标签位于左侧。

在DataFrame中对数据进行排序

我们可以使用DataFrame.sort_values(by=...)函数对DataFrame中的数据进行排序。

例如,让我们使用ascending布尔参数,该参数可以是TrueFalse。注意,ascending是我们可以传递给函数的参数,但descending不是。

代码语言:javascript
复制
...
print(ocean_depths.sort_values('Avg. Depth (m)', ascending=True))
代码语言:javascript
复制
          Avg. Depth (m)  Max. Depth (m)
Arctic              1205            5567
Southern            3270            7075
Atlantic            3646            8486
Indian              3741            7906
Pacific             4080           10803

现在,输出显示最左侧整数列中从低值到高值的数字。

使用DataFrames进行统计分析

接下来,让我们来看看一些总结的统计数据,我们可以用DataFrame.describe()功能从pandas收集。

在不传递特定参数的情况下,DataFrame.describe()函数将为数值数据类型提供以下信息:

返回

这是什么意思

count

频率计数; 事情发生的次数

mean

平均值或平均值

std

标准偏差,用于表示数据变化范围的数值

min

集合中的最小或最小数字

25%

第25百分位数

50%

第50百分位数

75%

第75百分位数

max

集合中的最大或最大数字

让我们通过使用describe()函数调用我们的ocean_depthsDataFrame 让Python打印出这个统计数据:

代码语言:javascript
复制
...
print(ocean_depths.describe())

当我们运行此程序时,我们将收到以下输出:

代码语言:javascript
复制
Output       Avg. Depth (m)  Max. Depth (m)
count        5.000000        5.000000
mean      3188.400000     7967.400000
std       1145.671113     1928.188347
min       1205.000000     5567.000000
25%       3270.000000     7075.000000
50%       3646.000000     7906.000000
75%       3741.000000     8486.000000
max       4080.000000    10803.000000

现在,您可以将此处的输出与原始DataFrame进行比较,并在将其视为一个组时更好地了解地球海洋的平均深度和最大深度。

处理缺失值

通常在处理数据时,您将缺少值。pandas软件包提供了许多不同的方法来处理丢失的数据,这些null数据是指由于某种原因不存在的数据或数据。在pandas中,这被称为NA数据并被渲染为NaN

我们使用DataFrame.dropna()函数去了下降遗漏值,使用DataFrame.fillna()函数填补缺失值。这将确保您在开始时不会遇到问题。

让我们创建一个名为user_data.py的新文件并使用一些缺少值的数据填充它并将其转换为DataFrame:

代码语言:javascript
复制
import numpy as np
import pandas as pd
​
​
user_data = {'first_name': ['Sammy', 'Jesse', np.nan, 'Jamie'],
        'last_name': ['Shark', 'Octopus', np.nan, 'Mantis shrimp'],
        'online': [True, np.nan, False, True],
        'followers': [987, 432, 321, np.nan]}
​
df = pd.DataFrame(user_data, columns = ['first_name', 'last_name', 'online', 'followers'])
​
print(df)

当我们运行程序时,我们的打印调用向我们显示以下输出:

代码语言:javascript
复制
  first_name      last_name online  followers
0      Sammy          Shark   True      987.0
1      Jesse        Octopus    NaN      432.0
2        NaN            NaN  False      321.0
3      Jamie  Mantis shrimp   True        NaN

这里有很多缺失的值。

让我们首先使用dropna()删除缺失的值。

代码语言:javascript
复制
...
df_drop_missing = df.dropna()
​
print(df_drop_missing)

由于在我们的小数据集中只有一行没有任何值丢失,因此在运行程序时,这是唯一保持完整的行:

代码语言:javascript
复制
  first_name last_name online  followers
0      Sammy     Shark   True      987.0

作为删除值的替代方法,我们可以使用我们选择的值填充缺失值,例如0。这个我们将使用DataFrame.fillna(0)实现。

删除或注释掉我们添加到文件中的最后两行,并添加以下内容:

代码语言:javascript
复制
...
df_fill = df.fillna(0)
​
print(df_fill)

当我们运行程序时,我们将收到以下输出:

代码语言:javascript
复制
  first_name      last_name online  followers
0      Sammy          Shark   True      987.0
1      Jesse        Octopus      0      432.0
2          0              0  False      321.0
3      Jamie  Mantis shrimp   True        0.0

现在我们所有的列和行都是完整的,而不是像我们的值NaN一样,我们现在已经用0填充了这些空格。您会注意到在适当的时候使用浮动。

此时,您可以对数据进行排序,进行统计分析以及处理DataFrame中的缺失值。

结论

本教程介绍了使用pandasPython 3 进行数据分析的介绍性信息。您现在应该已经安装pandas,并且可以使用pandas中的Series和DataFrames数据结构。

想要了解更多关于安装pandas包和使用数据结构的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Install the pandas Package and Work with Data Structures in Python 3》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 安装 pandas
  • Series
    • 没有声明索引
      • 声明索引
        • 索引和切片系列
          • 用字典初始化的系列
          • DataFrames
            • 在DataFrame中对数据进行排序
              • 使用DataFrames进行统计分析
                • 处理缺失值
                • 结论
                相关产品与服务
                云服务器
                云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档