Pandas实战-Series的方法

本文将主要介绍以下内容:

1. 导入CSV数据集

2. 排序Series值

3. 修改原Series值

4. 统计Series值

5. apply方法

 

在介绍Series的方法之前,需要一些现实世界的数据集,本文会使用以下三个CSV文件:

- pokemon.csv,超过800个的Pokémon,这是任天堂最受欢迎的宠物小精灵

- google_stock.csv,Google从2004年8月首次亮相到2019年10月的每日美元价格

- revolutionary_war.csv,美国独立战争期间的战斗记录,由于某些战争没有确定的开始日期或不是发生在美国领土,因此此数据集包含缺失值

1. 导入CSV数据集

首先启动Jupyter Notebook,然后导入pandas库:

In  [1] import pandas as pd

pandas可以导入十几种不同类型的文件。每种文件格式都有一个关联的导入方法,这些方法都以read开头。在下面的例子中,我们会使用read_csv方法。它的第一个参数filepath_or_buffer是文件名的路径,必须包含文件的扩展名,使用相对路径默认是在与Jupyter Notebook相同的目录中查找文件。

In  [2]: # 下面两行代码是相同的
         pd.read_csv(filepath_or_buffer = "pokemon.csv")
         pd.read_csv("pokemon.csv")
Out [2]:          Pokemon             Type
           0    Bulbasaur   Grass / Poison
           1      Ivysaur   Grass / Poison
           2     Venusaur   Grass / Poison
           3   Charmander             Fire
           4   Charmeleon             Fire
           …            …                …
         804    Stakataka     Rock / Steel
         805  Blacephalon     Fire / Ghost
         806      Zeraora         Electric
         807       Meltan            Steel
         808     Melmetal            Steel
         809 rows x 2 columns

请注意,输出的格式与Series有所不同,返回的实际上是pandas的DataFrame,它是支持多个行和列的二维数据结构。无论数据集包含多少列,pandas都会默认将导入的数据存储在DataFrame中。

如果要把数据存储在Series中,需要用到read_csv方法的另外两个参数index_col和squeeze。数据集有两列(Pokemon和Type),但是Series只支持一列,这时可以使用index_col参数指定作为索引的列名称,把列之一指定为索引。当使用字符串时,请注意区分大小写,该字符串必须与数据集中的列名完全相同。

In  [3]: pd.read_csv("pokemon.csv", index_col = "Pokemon")
Out [3]:                          Type
             Pokemon                   
           Bulbasaur    Grass / Poison
             Ivysaur    Grass / Poison
            Venusaur    Grass / Poison
          Charmander              Fire
          Charmeleon              Fire
                 ...               ...
           Stakataka      Rock / Steel
         Blacephalon      Fire / Ghost
             Zeraora          Electric
              Meltan             Steel
            Melmetal             Steel
         809 rows × 1 columns

但是pandas仍然默认将数据存储到DataFrame对象中。毕竟,多列容器仍然可以存储一列数据。为了简单起见,将数据存储在尽可能小的容器中通常是有利的。为了强制将数据存储在Series中,需要使用squeeze参数并设为True:

In  [4]: pd.read_csv("pokemon.csv", index_col = "Pokemon", squeeze = True)
Out [4]: Pokemon
         Bulbasaur    Grass / Poison
         Ivysaur      Grass / Poison
         Venusaur     Grass / Poison
         Charmander             Fire
         Charmeleon             Fire
                           ...
         Stakataka      Rock / Steel
         Blacephalon    Fire / Ghost
         Zeraora            Electric
         Meltan                Steel
         Melmetal              Steel
         Name: Type, Length: 809, dtype: object

输出揭示了有关数据集的一些重要信息。它显示了文件其余列的名称,这里是Type,数据集有809个值,dtype: object表示值类型是字符串。然后可以将Series分配给变量,以便可以在整个Notebook中重复使用它:

In  [5]: pokemon = pd.read_csv("pokemon.csv", index_col = "Pokemon", squeeze = True)

如果想知道该Series中的值或索引是否有NaN值,可以使用hasnans属性:

In  [6]: pokemon.hasnans
Out [6]: False

In  [7]: pokemon.index.hasnans
Out [7]: False

其余的两个数据集则有一些复杂,让我们从google_stock.csv开始,它包含一个Date列,其值采用YYYY-MM-DD格式:

In  [8]: pd.read_csv("google_stocks.csv").head()
Out [8]:           Date   Close
         0   2004-08-19   49.98
         1   2004-08-20   53.95
         2   2004-08-23   54.50
         3   2004-08-24   52.24
         4   2004-08-25   52.80

导入纯文本文件(例如CSV)时,pandas会为每一列假定最符合逻辑的数据类型。当涉及到日期时,为了安全起见会将其作为字符串导入。但我们也可以使用parse_dates参数

明确把Date列中的值转换为datetime对象。pandas可以识别日期的各种不同字符串格式,包括此例的YYYY-MM-DD格式。

In  [9]: google = pd.read_csv("google_stocks.csv",
                              index_col = "Date",
                              parse_dates = ["Date"],
                              squeeze = True)
         google.head()
Out [9]: Date
         2004-08-19    49.98
         2004-08-20    53.95
         2004-08-23    54.50
         2004-08-24    52.24
         2004-08-25    52.80
         Name: Close, dtype: float64

最后一个数据集是revolutionary_war.csv,让我们预览一下它的数据结构,可以使用read_csv默认返回的DataFrame对象的tail方法查看数据集的最后五行。我们可以看到,在State列中存在缺失值,用NaN表示:

In  [10]: pd.read_csv("revolutionary_war.csv").tail()
Out [10]:                           Battle   Start Date      S
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这道题让我们关注Pandas库的Series对象。Series是一种类似于一维数组的数据结构,可以存储不同类型的数据。其特点是具有自动对齐的功能,也就是说,它允许不同的索引对应不同的值,而不会抛出错误。您可以使用python中的字典对象创建Series对象,也可以使用列表、数组等其他数据类型创建。Series中的数据可以进行排序、运算和根据条件过滤等操作。总之,PandasSeries对象是一种非常方便的数据结构,可用于数据分析、数据处理以及数据可视化等方面。 ### 回答2: Pandas是一个优秀的Python数据分析库,提供了Series和DataFrame两个主要的数据结构,二者都可以看作是带标签的数组。其中,Series是一种一维数组,可以包含任意数据类型。Series对象的一个重要特点是其拥有索引,也就是每个元素都可以通过其唯一的标签进行访问。PandasSeries对象拥有许多方法和属性,方便用户进行数据分析和处理。 在Series对象中,可以通过以下方式进行创建: s = pd.Series(data, index=index) 其中,data是一个列表、数组、字典或标量值,而index是选填的参数,用于确定数据的索引。 Series对象支持许多类型的索引,包括整数和标签索引。例如,可以使用以下方式访问Series对象中的元素: s[0] #整数索引 s['a'] #标签索引 另外,在数据分析中,Series对象的一个重要功能是对数据的计算和处理方法,所有方法都可以通过 . 方法名 的方式调用,并且大多数方法都有内置的缺失值处理功能。以下是几个常用的Series对象方法: s.head() #显示Series对象的前五个元素 s.describe() #给出Series对象的一些统计信息 s.unique() #返回Series对象中独一无二的值 s.isnull() #返回Series对象中缺失的位置 s.fillna(value=0) #将缺失的值用指定值进行填充 s.map({'a':1,'b':2}) #将Series对象中的元素按照字典映射为新的值 总的来说,PandasSeries对象是进行数据处理、分析和可视化的重要工具,掌握其属性和方法,可以提高数据处理效率,更好地实现对数据的挖掘和分析。 ### 回答3: Pandas是一个十分强大的数据分析工具,而Series对象是Pandas中最基本的数据结构。Series是一种类似于一维数组的结构,其由一列数据和与其对应的索引组成。在实际应用中,Series经常被用来表示和操作单个的列。以下是几个重要的知识点: 1. Series对象的创建。Series对象可以通过多种方式创建,其中最常见的是通过Python列表或NumPy数组创建。Series默认的索引是整数,也可以自定义索引,但索引长度必须与数据长度相同。 2. Series对象的属性和方法Series对象具有许多有用的属性和方法,例如values、index、head()、tail()、describe()等。其中values属性返回Series的值,index属性返回Series的索引,而head和tail方法可以分别用于查看Series的前几行和后几行,describe方法能够生成关于数据的基本描述信息,如均值、标准差等等。 3. Series对象的索引和切片。Series对象支持类似于Python列表的索引和切片操作。Series索引可以使用标签和位置进行选择。同时,Series也可以进行bool型的索引,类似于NumPy的布尔索引。 4. Series对象的计算。Series对象可进行元素级的计算,而且支持广播运算。可以将Series与标量值、数组或其他Series进行运算,以进行加减乘除等操作。Series还支持一些聚合函数,可以计算Series的和、平均值、最大值、最小值、中位数和标准差等等。 综上所述,Series对象是Pandas中最重要的数据结构之一。掌握了Series对象的基本操作,能够在数据处理和分析中起到事半功倍的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值