Pandas知识点-Series数据结构介绍
Pandas知识点-Series数据结构介绍
本文用到的数据来源于网易财经,具体下载方式可以参考上一篇文章:https://blog.csdn.net/weixin_43790276/article/details/113923039。
获取数据的链接为:http://quotes.money.163.com/trade/lsjysj_600519.html#01b07
下载下来的数据是一个.csv格式的文本,数据无需处理,可以直接使用,也可以直接用办公软件Excel打开。为了方便后面的代码调用,下载完成后将这个.csv文件拷贝到代码的同级目录下。
一、Series数据结构介绍
1. 获取csv文件中的一列数据
# coding=utf-8
import pandas as pddf = 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 nps2 = 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碎片”,然后在后台回复“pandas02”关键字获取本文代码和数据。
Pandas知识点-Series数据结构介绍相关推荐
- Python——pandas模块—Series数据结构
Python--pandas模块-Series数据结构 Python--pandas模块-Series数据结构 pandas Series 创建Series 没有指定索引列时,自动创建:0~~(N-1 ...
- pandas基础 -- Series数据结构
Series数据结构 简介 Series又称之为序列 Series是一种类似于一维数组的对象,由下面两个部分组成: values:一组数据(ndarray类型) index:相关的数据索引标签 nam ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主
利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目 ...
- python怎么分析数据结构_《利用Python进行数据分析》第五章-pandas的数据结构介绍...
pandas的数据结构介绍 要使用pandas,你首先就得熟悉它的两个主要数据结构:Series和DataFrame.虽然它们并不能解决所有问题,但它们为大多数应用提供了一种可靠的.易于使用的基础. ...
- pandas 入门(pandas 数据结构介绍)
pandas 数据结构介绍 一.pandas 基础数据结构 1.pandas 中主要有两种数据结构:Series 和 DataFrame. 2.Series:一种一维的数组型对象,它包含了一个值序列( ...
- python数据分析包pandas论文_python数据分析pandas包入门学习(一)pandas数据结构介绍...
本文参考<利用python进行数据分析>的第五章 pandas入门python 1 pandas数据结构介绍 pandas有两种主要的数据结构:series和DataFrame Serie ...
- Pandas 中 Series 和 DataFrame 知识点
Series Series对象的创建 # pandas 学习 import pandas as pd from pandas import Series,DataFrame import numpy ...
- Python Pandas 常用的数据结构有哪些?详解Series、DataFrame、Index数据结构。
Pandas常用数据结构 Pandas简介 Series 构建 Series 对象 通过数组/列表 通过ndarray 通过dict 指定index Series 数据结构 查看 Series 数据 ...
- Pyhton科学计算工具pandas(一)—— Series 数据结构
Pandas(一) -- 数据结构Series Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pand ...
最新文章
- python接口自动化测试(三)-requests.post()
- pythonlist基本操作_Python list 常用操作
- Core Text 入门
- 解决:The application could not be installed: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
- 111 第一章操作系统概述总结思维导图+错题整理
- 详解Python的*args和 **kwargs
- matlab 游标 精度,如何在MATLAB数据光标中显示更高精度的数字?
- laydate 周_宝来屋:5天168万!海盐周大生新店如何赢过竞品实现可持续化客流-广告随意贴...
- Linux/Windows 文件交互读取转义字符变换
- Win7系统下解决VB6.0鼠标滚轮支持
- PHP获取当前脚本内存占用情况
- QT 操作 QLabel
- python预处理tif格式图片
- linux终端安装deb文件,如何通过命令行安装.deb文件?
- 金融危对机计算机行业的影响,1范文2-金融机对我国电子信息产业的影响.doc
- 以下哪些属于计算机应用领域,以下哪些计算机的应用领域?()
- 外企常见英语口语面试题
- Polygon与以太坊通信机制研究
- Redis工具类封装RedisUtils
- 蜂鸣器播放音乐 fpga实现
热门文章
- python实战===生成随机数
- ASP.NET Web API 接口执行时间监控
- requestAnimationFrame 方法你真的用对了吗?
- codeforce 804B Minimum number of steps
- android播放html5视频,仅仅有声音没有图像视频
- 重新组织和重新生成索引(转载)
- php使用http请求头实现文件下载
- Ubuntu下的文件安全删除工具
- lvs+keepalived实现lvs nat模式热备配置
- Webhook入门教程:Webhook vs API 它们之间有什么区别?