Python For Data Analysis -- Pandas
首先pandas的作者就是这本书的作者
对于Numpy,我们处理的对象是矩阵
pandas是基于numpy进行封装的,pandas的处理对象是二维表(tabular, spreadsheet-like),和矩阵的区别就是,二维表是有元数据的
用这些元数据作为index更方便,而Numpy只有整形的index,但本质是一样的,所以大部分操作是共通的
大家碰到最多的二维表应用,关系型数据库中的表,有列名和行号,这些就是元数据
当然你可以用抽象的矩阵来对这些二维表做统计,但使用pandas会更方便
Introduction to pandas Data Structures
Series
A Series is a one-dimensional array-like object containing an array of data (of any NumPy data type) and an associated array of data labels, called its index.
简单的理解,就是字典,或一维表;不显式指定index时,会自动添加 0 through N - 1的整数作为index
这里可以简单的替换index,生成新的series,
大家想想,对于Numpy而言,没有显式的指定index,但也是可以通过整形的index取到数据的,这里的index其实本质上和numpy的整形index是一样的
所以对于Numpy的操作,也同样适用于pandas
同时,上面说了series其实就是字典,所以也可以用python字典来初始化
DataFrame
A DataFrame represents a tabular, spreadsheet-like data structure containing an ordered collection of columns, each of which can be a different value type (numeric, string, boolean, etc.).
如果接触过R,应该对DataFrame很熟悉,其实pandas就从某种程度上模拟出R的一些功能
所以如果用python也可以像R一样方便的做统计,那何必要再去用R
上面Series是字典或一维表,
DataFrame是二维表,也可以看作是series的字典
指定了列名,行名是自动生成的
同时也可以指定行名,这里增加了debt列,但是没有数据,所以是NaN
可以为debt,赋值
取行,用ix
也可以用嵌套字典来创建Dataframe,其实是series的字典,series本身就是字典,所以就是嵌套的字典
可以像numpy矩阵一样,转置
Essential Functionality
下面看看到底pandas在这些数据结构上提供了哪些方便的functions
Reindexing
A critical method on pandas objects is reindex, which means to create a new object with the data conformed to a new index.
其实就是更改indexing
增加e,并默认填上0
还可以通过method参数,来指定填充方式
可以选择向前或向后填充
对于二维表,可以在index和columns上同时进行reindex
reindex的参数,
Dropping entries from an axis
用axis指定维度,对于二维表,行是0,列是1
Indexing, selection, and filtering
基本和Numpy差不多
Arithmetic and data alignment
数据对齐和自动填充是pandas比较方便的一点
In [136]: df1 = DataFrame(np.arange(12.).reshape((3, 4)), columns=list('abcd'))
In [137]: df2 = DataFrame(np.arange(20.).reshape((4, 5)), columns=list('abcde'))
可以看到默认情况下,只有两个df都有的情况下,才会相加,否则为NaN
我觉得大部分情况,应该是希望有一个就加一个,即把没有的初始化为0
除了add,还支持
Function application and mapping
1. Element-wise:NumPy ufuncs (element-wise array methods) work fine with pandas objects:
另一种element-wise,使用applymap
2. 可以将func apply到每一行或每一列
比较复杂的case
3.对于某个行或列,即series进行map
Summarizing and Computing Descriptive Statistics
提供很多类似R的统计函数,
提供类似R中的descirbe,很方便
对非数值型,执行describe
汇总表,
Correlation and Covariance,相关系数和协方差
对MSFT和IBM之间求相关系数和协方差
也可以求出相关系数矩阵和协方差矩阵
Unique Values, Value Counts, and Membership
In [217]: obj = Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
In [218]: uniques = obj.unique()
In [219]: uniques
Out[219]: array([c, a, d, b], dtype=object)
In [220]: obj.value_counts()
Out[220]:
c 3
a 3
b 2
d 1
Handling Missing Data
提供一些用于处理missing data的工具函数
其中fillna复杂些,
Hierarchical Indexing
Hierarchical indexing is an important feature of pandas enabling you to have multiple (two or more) index levels on an axis. Somewhat abstractly, it provides a way for you to work with higher dimensional data in a lower dimensional form.
可以使用多层分级的index,其实本质等同于增加一维,所以相当于用低维来模拟高维数据
并且是支持,通过unstack和stack来还原多维数据的
Pandas还提供其他功能,尤其是ETL功能,方便数据处理
比如和各种文件读入和写出的功能
cleaning, transform(基于map), merge(join)……
Python For Data Analysis -- Pandas的更多相关文章
- 《python for data analysis》第五章,pandas的基本使用
<利用python进行数据分析>一书的第五章源码与读书笔记 直接上代码 # -*- coding:utf-8 -*-# <python for data analysis>第五 ...
- 数据分析---《Python for Data Analysis》学习笔记【04】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 数据分析---《Python for Data Analysis》学习笔记【03】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 数据分析---《Python for Data Analysis》学习笔记【02】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 数据分析---《Python for Data Analysis》学习笔记【01】
<Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...
- 《python for data analysis》第十章,时间序列
< python for data analysis >一书的第十章例程, 主要介绍时间序列(time series)数据的处理.label:1. datetime object.time ...
- 《python for data analysis》第九章,数据聚合与分组运算
# -*- coding:utf-8 -*-# <python for data analysis>第九章# 数据聚合与分组运算import pandas as pdimport nump ...
- 《python for data analysis》第七章,数据规整化
<利用Python进行数据分析>第七章的代码. # -*- coding:utf-8 -*-# <python for data analysis>第七章, 数据规整化 imp ...
- 学习笔记之Python for Data Analysis
Python for Data Analysis, 2nd Edition https://www.safaribooksonline.com/library/view/python-for-data ...
随机推荐
- loj 1154(最大流+枚举汇点)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26868 思路:拆点,容量为最多能跳的步数,然后设立一个超级源点,源 ...
- JSON浅总
我们在以前的学习中了解到XML是一种结构化的数据表示方式,一种可扩展标记语言!可以把XML理解成一个微型的结构化的小的数据库,保存一些小型的数据和传输数据,有严格的显示限制.但是XML语句有些冗长和繁 ...
- 自己动手跑起web项目
首先 1.安装配置jdk(http://www.cnblogs.com/felixzh/p/4491957.html) 2.安装配置Tomcat和eclipse(http://www.cnblogs. ...
- Android Studio 一些使用经验
一.Mac或Win 7 配置环境,以gradle为例 (1).可以在这里找gradle下载,或者去官网啦 Mac添加环境变量: 1.启动Terminal终端 2.输入cd ~/ 进入当前用户的home ...
- Hark的数据结构与算法练习之锦标赛排序
算法说明 锦标赛排序是选择排序的一种. 实际上堆排序是锦标赛排序的优化版本,它们时间复杂度都是O(nlog2n),不同之处是堆排序的空间复杂度(O(1))远远低于锦标赛的空间复杂度(O(2n-1)) ...
- 2016.6.23 PHP实现新闻发布系统主体部分
1.新闻发布系统的列表: <html><meta http-equiv="Content-Type" content="text/html; chars ...
- BZOJ4155 : [Ipsc2015]Humble Captains
第一问最小割,第二问: 设du[i]表示i点的度数,则要最小化$\frac{|1集合的du[i]之和-2集合的du[i]之和|}{2}$, 压位01背包即可. #include<cstdio&g ...
- 关于Web Worker你必须知道的7件事
介绍 通过使用Web Worker, 我们可以在浏览器后台运行Javascript, 而不占用浏览器自身线程.Web Worker可以提高应用的总体性能,并且提升用户体验.如果你想在自己的Web应用中 ...
- XmlElement 类
构造函数 名称 说明 XmlElement(String, String, String, XmlDocument) 此 API 支持 产品 基础结构,不能在代码中直接使用. 初始化 XmlEle ...
- 【C语言】14-返回指针的函数与指向函数的指针
前言 前面我们花了接近3个章节学习指针,应该都感受到指针的强大了吧.指针可以根据地址直接操作内存中的数据,使用得当的话,不仅能使代码量变少,还能优化内存管理.提升程序性能.关于指针的内容还非常多,比如 ...