Pandas 10min入门(官方文档注释版一)

接触Pandas有一段时间,但一直未能系统的进行过总结。最近开始接触机器学习,用pandas的地方颇多,因此专门重新整理以下。

首先,Pandas 作为Python处理矩阵类数据的王牌利器,其官方文档相当丰富而且详细,为了方便学习Pandas官方竟然给了一个10min中的入门教程,链接如下:http://pandas.pydata.org/pandas-docs/stable/10min.html 。

教程很详细,但是对于入门者而言,个人感觉还是缺少一些说明。因此特意增加了一些相关的注释和说明。详细内容如下:


  • 第一步:加载Pandas 库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

上述为加载的pandas 库,由于pandas中的维度元素主要是numpy,所以通常也将numpy一起加载,而matplotlib是一个画图的工具,为了方便后面展示需要,因此也加载了一份。这里需要注意的是3个加载的库都使用了缩写的简称pd,np,plt缩写的名字虽无正式约定,但是已经约定俗成,因此建议保留这种缩写的方式。

  • 创建一个Series对象

官方的定义:Series is a one-dimensional labeled array capable of holding any data type (integers, strings, floating point numbers, Python objects, etc.). The axis labels are collectively referred to as the index.

Series 是一个一维带标记的数组,它由一组数据(integers, strings, floating point numbers, Python objects, etc.)以及一组与之相关的索引组成。可以将Series看成是一个定长的有序字典,索引是到数据值的一个映射。

最长用的创建Series的方式:

 s = pd.Series(data, index=index) 

data 可以是任意的一种Numpy类型:

  • a Python dict
  • an ndarray
  • a scalar value (like 5)

Index是一组索引标签。如下所示:

>>> import pandas as pd
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> s = pd.Series([1,3,5,np.nan,6,8])
>>> s
0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

上文没有使用index,因此自动生成从0开始的index(注意:index并非只能是数值,也可以是字符串等值,但是需要自己定义).

代码中的np.nan是代表空值的含义。

  • 通过传递一个numpy array,时间索引以及列标签来创建一个DataFrame

>>> dates = pd.date_range(‘20130101‘, periods=6)
>>> dates
DatetimeIndex([‘2013-01-01‘, ‘2013-01-02‘, ‘2013-01-03‘, ‘2013-01-04‘,
               ‘2013-01-05‘, ‘2013-01-06‘],
              dtype=‘datetime64[ns]‘, freq=‘D‘)
>>> df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list(‘ABCD‘))
>>> df
                   A         B         C         D
2013-01-01 -1.456158 -0.017003  0.043328  0.314046
2013-01-02 -0.443706 -1.127461  0.122404  0.358885
2013-01-03 -1.004546 -0.029662  1.321131 -1.048084
2013-01-04 -0.103759  0.287075 -1.101669 -0.367991
2013-01-05 -0.379868  1.898191  3.520912 -0.384936
2013-01-06 -1.792955  1.118273 -0.279532  0.281036

DataFrame结构是一个二维(可以通过其他方法实现多维)的表格型数据结构,它含有一组有序的列,每列可以是不同的值类型。其既有行索引又又列索引,其可以被看作是由Series组成的字典(公用同一个索引)。

其创建时的参数含义具体如下:

index 相当于是一个行索引,columns相当于一个列索引。上述代码中index 通过 dates = pd.date_range(‘20130101‘, periods=6)  定义,列索引通过 columns=list(‘ABCD‘) 显示定义。

下面举的例子在官方文档中没有,但个人觉得为了更好地理解下一个官方的例子,有必要先了解下以下这个例子:

在前面讲述Series定义的时候,笔者提及“可以将Series看成是一个定长的有序字典”,在关于“Series”的例子中,我们传入的都市一个ndarray数组,但data的类型也可以是dict字典,如果data是一个字典的话,那么字典的key值也就默认就是index值,如下所示:

>>> sdata = {"name":"lst","age":34,"company":"icpdas"}
>>> sd = pd.Series(sdata)
>>> sd
age            34
company    icpdas
name          lst
dtype: object
>>> 

了解了刚才的例子,我们在看下面通过传递一个能够被转换成类似序列结构的字典对象来创建一个DataFrame的例子:

>>> df2 = pd.DataFrame({ ‘A‘ : 1.,
                           ‘B‘ : pd.Timestamp(‘20130102‘),
                           ‘C‘ : pd.Series(1,index=list(range(4)),dtype=‘float32‘),
                          ‘D‘ : np.array([3] * 4,dtype=‘int32‘),
                           ‘E‘ : pd.Categorical(["test","train","test","train"]),
                           ‘F‘ : ‘foo‘ })
>>> df2
     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo

可以发现字典的key值,自动变成了列index,而行index是自动生成的 。

  • 查看不同列的数据类型
>>> df2.dtypes
A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object
dtype: object
时间: 2024-12-16 08:52:42

Pandas 10min入门(官方文档注释版一)的相关文章

Pandas 10分钟入门(官方文档注释版二)

本文接续注释版1,前文重点讲述了如何创建一个panads对象,本文重点讲述如何查看这些已经创建的对象. [查看数据] See the top & bottom rows of the frame(查看frame头部和尾部的行) >>> import pandas as pd >>> long_series = pd.Series(np.random.randn(1000)) >>> import numpy as np >>>

Pandas 10分钟入门----缺失数据的处理(官方文档注释版三)

在日常我们获取的数据中,经常会出现数据缺失的情况.对数据缺失的处理,有多种处理的方法:插值填补.平均值填补方法很多.这里不具体讨论用哪种方式去插补这些数据,而只是谈谈如何使用pandas去快速的处理这些数据. pandas 常用np.nan代表缺失数据,详情可以查看Missing Data section. 1. reindex()可以允许你在指定维度上修改.增加.删除索引,并返回数据的副本: df1 = df.reindex(index=dates[0:4], columns=list(df.

Cocos2d-x v3.x 官方文档]C++版如何使用WebSocket

在C++中使用 详细代码可参考引擎目录下的/samples/Cpp/TestCpp/Classes/ExtensionsTest/NetworkTest/WebSocketTest.cpp文件. 头文件中的准备工作 首先需要include WebSocket的头文件. #include "network/WebSocket.h" cocos2d::network::WebSocket::Delegate定义了使用WebScocket需要监听的回调通知接口.使用WebSocket的类,需

一起学微软Power BI系列-官方文档-入门指南(5)探索数据奥秘

我们几篇系列文章中,我们介绍了官方入门文档与获取数据等基本知识.今天继续给大家另外一个重点,探索数据奥秘.有了数据源,有了模型,下一步就是如何解析数据了.解析数据的过程需要很多综合技能,不仅仅是需要掌握Power BI的功能要点,熟练的利用一些新功能来提高效率,同时还需要合理的利用仪表盘,以及合理的调整对象,同时作为一个完整的应用,必须掌握数据刷新和同步的技巧,避免做重复工作. 本文原文地址:一起学微软Power BI系列-官方文档-入门指南(5)探索数据奥秘 Power BI系列文章地址:微软

一起学微软Power BI系列-官方文档-入门指南(6)Power BI与Excel

今天介绍了官方入门文档中有关PowerBI和Excel的知识.前几篇入门文档有点仓促,加上最近时间的研究,会有更多技巧性和入门型的文章或者视频发布,最后2篇入门文档将更加详细一点,因为部分文章进行简单的翻译. 本文原文地址:一起学微软Power BI系列-官方文档-入门指南(6)Power BI与Excel Power BI系列文章地址:微软Power BI技术文章与资源目录 1.系列文章说明 一起学微软Power BI系列 文章将分为 官方文档,文档翻译,中文入门教程,中文视频教程和案例等内容

一起学微软Power BI系列-官方文档-入门指南(4)Power BI的可视化

在前面的系列文章中,我们介绍了官方有关获取数据,以及建模的原始文档和基本介绍.今天继续给大家介绍官方文档中,有关可视化的内容.实际上获获取数据和建模更注重业务关系的处理,而可视化则关注对数据的解读.这是我的理解,因为可视化的手段非常丰富,在面对大量的数据和模型,如何从中提取重要的关系,发现重要的数据趋势,并来指导生产和业务开展,这个才是体现数据价值的地方.可视化虽然很简单,但过程非常体现你对业务的理解和发现问题的思路,并不是一个拖动图表的过程.这一块内容非常多,以后有机会再根据实际案例来一步步掌

一起学微软Power BI系列-官方文档-入门指南(3)Power BI建模

我们前2篇文章:一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍 和一起学微软Power BI系列-官方文档-入门指南(2)获取源数据 中,我们介绍了官方入门文档与获取数据等基本知识.今天继续给大家介绍官方文档中,最核定的一个步骤,建模,不管是在Power BI还是在Tableau中,建模都是一个必不可少的步骤,包括传统的Power Privot中,也需要建模这个过程.建模的过程是一个不断演变和需要不断总结经验的过程,和我们传统的关系类型数据库设计有一些类似. 本

一起学微软Power BI系列-官方文档-入门指南(7)发布与共享-终结篇+完整PDF文档

接触Power BI的时间也只有几个月,虽然花的时间不多,但通过各种渠道了解收集,谈不上精通,但对一些重要概念和细节还是有所了解.在整理官方文档的过程中,也熟悉和了解了很多概念.所以从前到后把微软官方的入门稳定粗略的介绍了一下.本篇文章也是这个小系列的终结篇.我将所有的章节整理为了一个完整的PDF文档分享给大家.其实了解之后发现文档还是有些简单的,过程其实没介绍到.因为微软也提供了支持文档,但限于篇幅太大,我就不打算按照原文一个个复制给大家了.入门文档是让大家有个粗略的了解.技术文档就是细节了,

苹果官方文档阅读的入门

1.下载和打开官方文档的步骤 (1).在code->preferences->components(目录下的document栏目)可以下载相关的官方文档 (2).在help->documentation and API references中可以打开官方文档 2.下面介绍的是官方网站上的文档结构,相关链接:https://developer.apple.com/library/ios/navigation/#section=Resource%20Types&topic=Guide