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库(参考前边安装并导入组件库);

'''
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数据结果的信息完整展示了:

>>> %Run PpandasSeries.py
    Name
    Lucas    5
    Robin    7
    Alex     4
    Name: Crabs, dtype: int64

我们看一看组成Series的元素的全貌:

#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的类):

>>> %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。

#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对象中的值,就会报错,看来跟元组一样,不可修改。

>>> %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。

Last updated