专栏首页Python碎片公众号的专栏Pandas知识点-Series数据结构介绍

Pandas知识点-Series数据结构介绍

本文用到的数据来源于网易财经,具体下载方式可以参考上一篇文章:Pandas知识点-DataFrame数据结构介绍

获取数据的链接为:http://quotes.money.163.com/trade/lsjysj_600519.html#01b07

下载下来的数据是一个.csv格式的文本,数据无需处理,可以直接使用,也可以直接用办公软件Excel打开。为了方便后面的代码调用,下载完成后将这个.csv文件拷贝到代码的同级目录下。

一、Series数据结构介绍

1. 获取csv文件中的一列数据

# coding=utf-8
import pandas as pd


df = pd.read_csv('600519.csv', encoding='gbk')
data = df['收盘价']
print(data)
print(type(data))

数据文件是600519.csv,将此文件放到代码同级目录下,从文件中读取出数据,然后取其中的一列,数据如下图。

使用type()函数打印数据的类型,数据类型为Series。从csv文件中读取出来的数据是DataFrame数据,取其中的一列,数据是一个Series数据。

<class 'pandas.core.series.Series'>

2. Series数据结构的构成

Series数据结构是一种类似于一维数组的数据对象,由一组数据(numpy中的数据类型)和行索引构成。因为数据是一维的(只有一列),所以Series只有行索引,没有列索引。

Series由行索引和数据组成。如果数据行数很多,会自动将数据折叠,中间的显示为“...”。

与DataFrame相比,DataFrame有行索引和列索引,而Series只有行索引。取出DataFrame中的任意一列(或任意一行,行用iloc获取,如df.iloc[0]),其数据类型都是Series,说明DataFrame是由Series构成的。

二、创建Series和DataFrame

1. 创建Series

s1 = pd.Series({'a': 10, 'b': 20, 'c': 30, 'd': 40})
print(s1)
print(type(s1))

a    10
b    20
c    30
d    40
dtype: int64
<class 'pandas.core.series.Series'>
import numpy as np


s2 = pd.Series(np.random.rand(5), index=[alpha for alpha in 'abcde'])
print(s2)
print(type(s2))
a    0.269565
b    0.520705
c    0.419913
d    0.182670
e    0.031500
dtype: float64
<class 'pandas.core.series.Series'>

实例化一个Pandas中的Series类对象,即可创建出一个Series数据。传入Series中的数据时,可以传入一个字典,每个键值对的key是行索引,value是对应的数据,如上面的s1。也可以传入一个一维数组,然后用index参数设置行索引,不设置行索引时默认为数值型索引,即从0开始的整数,如上面的s2。

Series中保存的数据data可以是整数、浮点数、字符串、Python对象等类型的数据。数据data和索引index都是array-like的数据,且都是一维的。此外,还可以按需指定保存的数据类型dtype,Series的命名name,是否复制已有数据copy(bool)。

关于索引还需要注意,Pandas中的索引值是可以重复的,当然最好不要设置重复,避免在进行一些索引不可重复的操作时出现错误。

2. 创建DataFrame

df1 = pd.DataFrame({
    'one': s2,
    'two': pd.Series(np.random.rand(4), index=[alpha for alpha in 'abcd'])
})
print(df1)
print(type(df1))
        one       two
a  0.988763  0.592909
b  0.093969  0.674316
c  0.593211  0.253496
d  0.374765  0.565424
e  0.850890       NaN
<class 'pandas.core.frame.DataFrame'>
df2 = pd.DataFrame(np.random.randn(3, 3), index=pd.date_range('1/1/2021', periods=3), columns=['one', 'two', 'three'])
print(df2)
print(type(df2))
                 one       two     three
2021-01-01  0.736518 -0.012771  0.459488
2021-01-02  0.665910  0.700380 -1.124228
2021-01-03 -0.418457 -1.907136 -0.207422
<class 'pandas.core.frame.DataFrame'>

实例化一个Pandas中的DataFrame类对象,即可创建出一个DataFrame数据。传入DataFrame中的数据时,可以传入一个字典,每个键值对是一列数据,key是列索引,value是列中保存的数据,每个value都是一个Series数据,如上面的df1,这也再次说明DataFrame是由Series组成的。也可以传入一个二维数组,然后用index参数和columns参数设置行索引和列索引,index和columns都是array-like的数据,如上面的df2。

同理,也可以根据需要指定保存的数据类型dtype,是否复制已有数据copy(bool)。

DataFrame由多个Series组成,当多个Series的长度不一样时,DataFrame中会有缺失值,Pandas中用NaN(Not a Number)表示缺失值,如上面的df1中就有一个缺失值。

三、Series的基本属性

1. Series的行索引index

df = pd.read_csv('600519.csv', encoding='gbk')
s = df['涨跌幅']
print(s.index)
RangeIndex(start=0, stop=4726, step=1)

2. Series中的数据values和array

df = pd.read_csv('600519.csv', encoding='gbk')
s = df['涨跌幅']
print(s.values)
print(type(s.values))
print(s.array)
['-0.4452' '-4.9981' '5.8854' ... '-1.3022' '3.685' '13.2526']
<class 'numpy.ndarray'>
<PandasArray>
['-0.4452', '-4.9981',  '5.8854',  '3.6993',  '2.4125', '-0.3382',  '5.9792',
  '2.0937',  '1.6915', '-0.3242',
 ...
 '-2.7793', '-1.9765', '-0.0534',  '1.2706', '-0.2965', '-0.2426',  '1.9791',
 '-1.3022',   '3.685', '13.2526']
Length: 4726, dtype: object

values是一个ndarray对象,即一维数组,是numpy中的基本数据类型。array是一个PandasArray,是Pandas中的array数据类型。后面会专门写文章说明他们的区别。

3. Series的形状shape和转置.T

df = pd.read_csv('600519.csv', encoding='gbk')
s = df['涨跌幅']
print("形状:", s.shape)
s2 = s.T
print("转置后形状:", s2.shape)
形状:(4726,)
转置后形状:(4726,)

需要注意的是,Series转置之后的形状与转置之前是一样的,这是因为Series本身是一维的。

四、Series的索引设置

1. 设置Series的行索引

df = pd.read_csv('600519.csv', encoding='gbk')
s = df['涨跌幅'].head(3)
print(s)
s.index = [alpha for alpha in 'abc']
print(s)
0    -0.4452
1    -4.9981
2     5.8854
Name: 涨跌幅, dtype: object
a    -0.4452
b    -4.9981
c     5.8854
Name: 涨跌幅, dtype: object

Series没有set_index()方法,如果需要修改Series的索引,可以直接对index属性赋值。

2. 重设索引

s2 = s.reset_index()
print(s2)
print(type(s2))
s3 = s.reset_index(drop=True)
print(s3)
print(type(s3))
  index      涨跌幅
0     a  -0.4452
1     b  -4.9981
2     c   5.8854
<class 'pandas.core.frame.DataFrame'>
0    -0.4452
1    -4.9981
2     5.8854
Name: 涨跌幅, dtype: object
<class 'pandas.core.series.Series'>

修改Series的行索引后,如果要将行索引还原成初始状态,可以使用reset_index()方法还原。在调用reset_index()时,要将drop参数设置为True,否则Pandas不会删除前面设置的行索引,而是将设置的行索引移动到数据中,使数据变成两列,这样数据就变成了DataFrame,而不再是Series,如上面的s2。

以上就是Pandas中Series数据结构的基本介绍。Series与DataFrame的很多方法是一样的,如使用head()和tail()来显示前n行或后n行。后面会陆续介绍更多相关的属性和方法。

本文分享自微信公众号 - Python 碎片(python-suipian),作者:binn wong

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-02-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Pandas知识点-DataFrame数据结构介绍

    Pandas是Python中用于数据处理和数据分析的开源库,2008年由金融数据分析师Wes McKinney开发。开发Pandas的初衷是为了方便进行金融数据...

    Python碎片公众号
  • Pandas-Series知识点总结

    1、Series创建 根据list pandas有两种主要的数据结构,第一种是Series,是一种类似于一维数组的数据结构,它由一组数据以及一组与之相关的数据标...

    石晓文
  • pandas知识点(数据结构)

    py3study
  • Pandas数据结构之Series

    本节介绍 Pandas 基础数据结构,包括各类对象的数据类型、索引、轴标记、对齐等基础操作。首先,导入 NumPy 和 Pandas:

    用户1564362
  • 《爱上潘大师》系列-与Series的初次相见

    当然,小一我也是潘大师的忠实粉丝,在MB级别的数据处理中也全靠潘大师才能够苟活到现在。

    小一不二三
  • [编程经验] Pandas入门(一)

    今天和大家介绍一个非常厉害的数据处理的工具,Pandas。Python中比较有名的数据处理的库除了Pandas,还有Numpy,Matplotlib。这三个在平...

    用户1622570
  • python数据分析万字干货!一个数据集全方位解读pandas

    说到python与数据分析,那肯定少不了pandas的身影,本文希望通过分析经典的NBA数据集来系统的全方位讲解pandas包,建议搭配IDE一遍敲一边读哦。话...

    TechFlow-承志
  • 数据分析篇 | Pandas数据结构之Series

    本节介绍 Pandas 基础数据结构,包括各类对象的数据类型、索引、轴标记、对齐等基础操作。首先,导入 NumPy 和 Pandas:

    龙哥
  • Pandas知识点-统计运算函数

    统计运算非常常用。本文介绍Pandas中的统计运算函数,这些统计运算函数基本都可以见名知义,使用起来非常简单。

    Python碎片公众号

扫码关注云+社区

领取腾讯云代金券