快速学习 Python 数据分析包 之 pandas

  最近在看时间序列分析的一些东西,中间普遍用到一个叫pandas的包,因此单独拿出时间来进行学习。

参见 pandas 官方文档 http://pandas.pydata.org/pandas-docs/stable/index.html

  以及相关博客 http://www.cnblogs.com/chaosimple/p/4153083.html

Pandas介绍

  Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数据包开发的PyData开发team继续开发和维护,属于PyData项目的一部分。Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。

  Pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包,类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的 。

  Series 和 DataFrame 分别对应于一维的序列和二维的表结构。

  通常用下列方式来引入需要的包

1 import pandas as pd
2 import numpy as np
3 import matplotlib.pyplot as plt

Series 

  Series 可以看做一个定长的有序字典,基本任意的一维数据都可以用来构造 Series 对象。

可以通过传递一个list对象来创建一个Series,pandas会默认创建整型索引

>>> s = pd.Series([1,2,3.0,‘a‘,‘bc‘])
>>> s
0     1
1     2
2     3
3     a
4    bc
dtype: object

  Series 对象包含两个主要的属性:index 和 values,分别为上例中左右两列。因为传给构造器的是一个List,所以 index 的值是从 0 起递增的整数,如果传入的是一个类字典的键值对结构,就会生成 index-value 对应的 Series;或者在初始化的时候以关键字参数显式指定一个 index 对象。


>>> s = pd.Series(data=[1,2,3.0,‘a‘,‘bc‘],index = [‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
>>> s.name = ‘example‘
>>> s.index.name=‘New_index‘
>>> s
New_index
a 1
b 2
c 3
d a
e bc
Name: example, dtype: object

>>> s.index
Index([u‘a‘, u‘b‘, u‘c‘, u‘d‘, u‘e‘], dtype=‘object‘)
>>> s.values
array([1, 2, 3.0, ‘a‘, ‘bc‘], dtype=object)

  Series 对象的元素会严格依照给出的 index 构建,这意味着:如果 data 参数是有键值对的,那么只有 index 中含有的键会被使用;以及如果 data 中缺少响应的键,即使给出 NaN 值,这个键也会被添加。

  注意 Series 的 index 和 values 的元素之间虽然存在对应关系,但这与字典的映射不同。index 和 values 实际仍为互相独立的 ndarray 数组,因此 Series 对象的性能完全 ok。

  Series 这种使用键值对的数据结构最大的好处在于,Series 间进行算术运算时,index 会自动对齐。

  Series 与 index 都有 name 属性。

DataFrame

  DataFrame 是一个表格型的数据结构,它含有一组有序的列(类似于 index),每列可以是不同的值类型(不像 ndarray 只能有一个 dtype)。基本上可以把 DataFrame 看成是共享同一个 index 的 Series 的集合。

  DataFrame 的构造方法与 Series 类似,只不过可以同时接受多条一维数据源,每一条都会成为单独的一列

  可以通过传递一个能够被转换成类似序列结构的字典对象来创建一个DataFrame

data_dic = ({ ‘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‘ })
df = pd.DataFrame(data_dic)
>>> df
   A          B  C  D      E    F
0  1 2013-01-02  1  3   test  foo
1  1 2013-01-02  1  3  train  foo
2  1 2013-01-02  1  3   test  foo
3  1 2013-01-02  1  3  train  foo

  虽然data_dic 是个字典,但字典的键 A B C D 并非充当 DataFrame 中的 index 的角色,而是 Series 的 “name” 属性。这里生成的 DataFrame 的index 是 0 1 2 3。

>>> df.index
Int64Index([0, 1, 2, 3], dtype=‘int64‘)
>>> df.B
0   2013-01-02
1   2013-01-02
2   2013-01-02
3   2013-01-02
Name: B, dtype: datetime64[ns]

  可以通过 df.B 这样的形式访问 A B C D 代表的不同的 Series

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

dates = pd.date_range(‘20130101‘, periods=6)
df2 = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list(‘ABCD‘))
>>> df2
                   A         B         C         D
2013-01-01 -0.941915 -1.304691 -0.837790 -0.805101
2013-01-02 -0.665522 -2.935955  1.249425  0.902390
2013-01-03 -0.419268  0.750735 -0.547377 -0.075151
2013-01-04  1.362527 -1.059686 -1.564129 -1.267506
2013-01-05  0.719452 -0.152727  0.319914 -0.448535
2013-01-06 -0.863264 -0.548317  0.277112  1.233825
>>> df.index
Int64Index([0, 1, 2, 3], dtype=‘int64‘)
>>> df.values
array([[1.0, Timestamp(‘2013-01-02 00:00:00‘), 1.0, 3, ‘test‘, ‘foo‘],
       [1.0, Timestamp(‘2013-01-02 00:00:00‘), 1.0, 3, ‘train‘, ‘foo‘],
       [1.0, Timestamp(‘2013-01-02 00:00:00‘), 1.0, 3, ‘test‘, ‘foo‘],
       [1.0, Timestamp(‘2013-01-02 00:00:00‘), 1.0, 3, ‘train‘, ‘foo‘]], dtype=object)

 基本操作

  1. head()和tail()查看头和尾部的某几行

>>> df.head(2)
   A          B  C  D      E    F
0  1 2013-01-02  1  3   test  foo
1  1 2013-01-02  1  3  train  foo

>>> df.tail(2)
   A          B  C  D      E    F
2  1 2013-01-02  1  3   test  foo
3  1 2013-01-02  1  3  train  foo

  2.  describe()快速统计

>>> df.describe()
       A  C  D
count  4  4  4
mean   1  1  3
std    0  0  0
min    1  1  3
25%    1  1  3
50%    1  1  3
75%    1  1  3
max    1  1  3

  3. 转置

>>> df.T
                     0                    1                    2  A                    1                    1                    1
B  2013-01-02 00:00:00  2013-01-02 00:00:00  2013-01-02 00:00:00
C                    1                    1                    1
D                    3                    3                    3
E                 test                train                 test
F                  foo                  foo                  foo   

                     3
A                    1
B  2013-01-02 00:00:00
C                    1
D                    3
E                train
F                  foo  

  4. 按轴排序

>>> df.sort_index(axis=1,ascending=True)
   A          B  C  D      E    F
0  1 2013-01-02  1  3   test  foo
1  1 2013-01-02  1  3  train  foo
2  1 2013-01-02  1  3   test  foo
3  1 2013-01-02  1  3  train  foo
>>> df.sort_index(axis=1,ascending=False)
     F      E  D  C          B  A
0  foo   test  3  1 2013-01-02  1
1  foo  train  3  1 2013-01-02  1
2  foo   test  3  1 2013-01-02  1
3  foo  train  3  1 2013-01-02  1

  5. 按值进行排序

>>> df2.sort(columns=‘B‘,ascending=True)
                   A         B         C         D
2013-01-02 -0.665522 -2.935955  1.249425  0.902390
2013-01-01 -0.941915 -1.304691 -0.837790 -0.805101
2013-01-04  1.362527 -1.059686 -1.564129 -1.267506
2013-01-06 -0.863264 -0.548317  0.277112  1.233825
2013-01-05  0.719452 -0.152727  0.319914 -0.448535
2013-01-03 -0.419268  0.750735 -0.547377 -0.075151
>>> df2.sort(columns=‘B‘,ascending=False)
                   A         B         C         D
2013-01-03 -0.419268  0.750735 -0.547377 -0.075151
2013-01-05  0.719452 -0.152727  0.319914 -0.448535
2013-01-06 -0.863264 -0.548317  0.277112  1.233825
2013-01-04  1.362527 -1.059686 -1.564129 -1.267506
2013-01-01 -0.941915 -1.304691 -0.837790 -0.805101
2013-01-02 -0.665522 -2.935955  1.249425  0.902390
时间: 2024-10-27 08:19:35

快速学习 Python 数据分析包 之 pandas的相关文章

Python 数据分析包:pandas 基础

pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的 .Series 和 DataFrame 分别对应于一维的序列和二维的表结构.pandas 约定俗成的导入方法如下: from pandas import Series,DataFrame import pandas as pd Series Series 可以看做一个定长的有序字典.基本

python 数据分析--数据处理工具Pandas(1)

说明: 本文用到的数据集下载地址: 链接:https://pan.baidu.com/s/1zSOypUVoYlGcs-z2pT2t0w 提取码:z95a Pands模块可以帮助数据分析师轻松地解决数据的预处理问题,如数据类型的转换.缺失值的处理.描述性统计分析.数据的汇总等.Pandas模块的核心操作对象就是序列(Series)和数据框(DataFrame).序列可以理解为数据集中的一个字段,数据框是指含有至少两个字段(或序列)的数据集. 1. 序列和数据框的构造 1.1 构造序列 构造一个序

Python——数据分析,Numpy,Pandas,matplotlib

由于图片内容太多,请拖动至新标签页再查看 Python--数据分析,Numpy,Pandas,matplotlib 原文地址:https://www.cnblogs.com/Jery-9527/p/10804069.html

python 数据分析--数据处理工具Pandas(2)

在前面的学习中主要了解了Pandas如何构造序列和数据框,如何读取和写入各种格式的数据,以及如何对数据进行初步描述,本文将进一步了解Pandas如何处理字符串和日期数据,数据清洗,获取数据子集,透视表,分组聚合操作等内容. 4. Pandas处理字符串和日期数据 待处理的数据表 数据处理要求: 更改出生日期birthday和手机号tel两个字段的数据类型. 根据出生日期birthday和开始工作日期start_work两个字段新增年龄和工龄两个字段. 将手机号tel的中间四位隐藏起来. 根据邮箱

《Python 数据分析》笔记——pandas

Pandas pandas是一个流行的开源Python项目,其名称取panel data(面板数据)与Python data analysis(Python 数据分析)之意. pandas有两个重要的数据结构:DataFrame和Series pandas数据结构之DataFrame pandas的DataFrame数据结构是一种带标签的二维对象,与Excel的电子表格或者关系型数据表非常相似. 可以用下列方式来创建DataFrame: 1.从另一个DataFrame创建DataFrame 2.

python数据分析之numpy+pandas+scipy+matplotlib+scikit-learn安装

摘要 利用python来进行数据分析的时候,需要安装一些常见的工具包,如numpy,pandas,scipy等等,在安装的过程中,经常遇到一些安装细节的问题,如版本不匹配,需要依赖包没有正确安装等等,本文汇总梳理了下几个必要安装包的安装步骤,希望对读者有帮助,环境是windows 64 bit+python2.7.11. 一.安装python2.7.11 进入官网:https://www.python.org/downloads/release/python-2711/ 下载如下的连接: 下载之

学习Python大数据处理模块Pandas

适合初学入门 第一课 构造数据 本节基本了解Pandas里的一些数据结构和模块的基本使用,初步了解Pandas的提供的一些功能,学会基本使用. 创建数据 通过Python的zip构造出一元组组成的列表作为DataFrame的输入数据rec. In [3]: import pandas as pd In [4]: import random In [5]: num = random.sample(xrange(10000, 1000000), 5) In [6]: num Out[6]: [244

Python 实现Linux KVM 系统监控指标,很多年前写的,拿出来是为了帮助同事,快速学习Python技术

#!/usr/bin/env python #-*-coding:utf8-*- """ @Author :  Villiam Sheng @Group  :  Linux Group @Date   :  2011-07-18 @Funtion:             Update kvm host status ...             get_nic: Get a week network flow                 1,Get Seven day

基于Python数据分析与机器学习案例实战教程

课程--基于Python数据分析与机器学习案例实战教程 分享网盘下载--https://pan.baidu.com/s/1jHSaRAY 密码: xk37 课程背景基于数据分析与机器学习领域,使用python作为课程的实战语言,随着大数据与人工智能领域日益火爆,数据分析和机器学习建模成了当下最热门的技术,课程旨在帮助同学们快速掌握python数据分析包以及经典机器学习算法并通过对真实数据集分析进行实战演示. 课程风格通俗易懂,基于真实数据集案例实战. 主体课程分成三个大模块 (1)python数