pandas 怎么来使用pandas的最重要的数据结构Series和DataFrame?
pandas 是基于 NumPy 构建的,让以NumPy为中心的应用变得更加简单。pandas有 Series和DataFrame两种最重要的数据结构。
Series
Series 就是类似于以为数组的对象,有一组数据和一组相关的索引数据组成;因为可以通过索引映射到对应的数据,所以还可以将Series看成一组定长的有序字典。
还以惠州虎洲岛旅行为例,Lukas,Robin,Alex一起去惠州大亚湾的黄金海岸旅游,在老虎洲岸边上的沙滩上,Lukas捉到了5只螃蟹,Robin捉到了7只螃蟹,Alex捉到了4只螃蟹;看一下我们用Series 如何来展示的。
首先引入pandas库中的Series数据结构;在所有操作之前,需要先导入pandas库(参考前边安装并导入组件库 );
Copy '''
Welcome to LearnPython.NET
File Name: PpandasSeries.py
Download from:https://www.learnpython.net/cn/python-code-samples.html
Author: LearnPython.Net
Editor: CoderChiu
'''
#import pandas as pd
import numpy as np
from pandas import Series , DataFrame
#Lucas, Robin, Alex's Crabs
seriesCrabs = Series ([ 5 , 7 , 4 ], index = [ 'Lucas' , 'Robin' , 'Alex' ])
seriesCrabs . name = "Crabs"
seriesCrabs . index . name = "Name"
#Series's Contents;
print (seriesCrabs)
结果如下,一个Series数据结果的信息完整展示了:
Copy >>> % Run PpandasSeries . py
Name
Lucas 5
Robin 7
Alex 4
Name : Crabs , dtype : int64
我们看一看组成Series的元素的全貌:
Copy #Series's details;
print ( type (seriesCrabs))
print ( type (seriesCrabs.name))
print ( type (seriesCrabs.values))
print ( type (seriesCrabs.index))
print ( type (seriesCrabs.index.name))
细节信息如下(Series的name和index的name都是一个字符串,Series的values是一个ndarray,Series的index是一个叫做Index的类):
Copy >>> % Run PpandasSeries . py
<class 'pandas.core.series.Series' >
<class 'str' >
<class 'numpy.ndarray' >
<class 'pandas.core.indexes.base.Index' >
<class 'str' >
看到这里,你是否觉得Series像是一个小表格,索引一列,值一列,索引和值都有名字;这不就是一个表格吗!
通过字典来创建Series;
Index
索引对象负责管理轴标签和其他元数据(轴名称等),前边的数据结构Series和后边将要学习的数据结构DataFrame,在构建时候,数组或者其他序列的标签都会生成一个标签对象Index。
Copy #Index details
idxCrabs = seriesCrabs . index
print (idxCrabs)
idxCrabs . name = "NewName"
print (idxCrabs)
#idxCrabs is seriesCrabs.index;
print (seriesCrabs.index is idxCrabs)
idxCrabs [ 0 ] = "Bob" #
取到了Series的index,里边有一个列表;并且 idxCrabs 和 seriesCrabs.index 是同一个数据;从以下的打印信息中,可以看出端倪。企图修改Index对象中的值,就会报错,看来跟元组一样,不可修改。
Copy >>> % Run PpandasSeries . py
Index ([ 'Lucas' , 'Robin' , 'Alex' ], dtype = 'object' , name = 'Name' )
Index ([ 'Lucas' , 'Robin' , 'Alex' ], dtype = 'object' , name = 'NewName' )
True
Traceback (most recent call last):
File "...\PpandasSeries.py" , line 29 , in < module >
idxCrabs [ 0 ] = "Bob"
File "...\indexes\base.py" , line 4260 , in __setitem__
raise TypeError ( "Index does not support mutable operations" )
TypeError : Index does not support mutable operations
pandas的Index对象还有不少,主要有以下几种:
Int64Index 我猜是存储的特别多的数据时候有用;时间戳索引可能是针对金融市场的数据索引对象;这么多的索引对象,不能在此一一说明;后边学习过程中,会再详细说明。
Index的属性和方法
DataFrame
数据结构DataFrame是一个二维的数据表格,用过Excel的人都知道,跟Excel的Sheet里展示的内容一模一样;表格有行和列做成;第一列是索引,默认的就是1,2,3等等,第一列和其他列呢,都组成一个完整的Series,这就是数据结构DataFrame。