python pandas介绍

pandas是基于numpy包扩展而来的,因而numpy的绝大多数方法在pandas中都能适用。

pandas中我们要熟悉两个数据结构Series 和DataFrame

Series是类似于数组的对象,它有一组数据和与之相关的标签组成。

import pandas as pd

object=pd.Series([2,5,8,9])

print(object)

结果为:

0 2
1 5
2 8
3 9
dtype: int64

结果中包含一列数据和一列标签
我们可以用values和index分别进行引用

print(object.values)
print(object.index)

结果为:

[2 5 8 9]  
RangeIndex(start=0, stop=4, step=1)

我们还可以按照自己的意愿构建标签

object=pd.Series([2,5,8,9],index=[‘a‘,‘b‘,‘c‘,‘d‘])

print(object)

结果为:

a 2
b 5
c 8
d 9
dtype: int64

我们还可以对序列进行运算

print(object[object>5])

结果为

c 8
d 9
dtype: int64

也可以把Series看成一个字典,使用in进行判断

print(‘a‘ in object)

结果为:

True

另外,值是不能直接被索引到的

print(2 in object)

结果为:

False

Series中的一些方法,

isnull或者notnull可以用于判断数据中缺失值情况

name或者index.name可以对数据进行重命名

DataFrame数据框,也是一种数据结构,和R中的数据框类似

data={‘year‘:[2000,2001,2002,2003],
          ‘income‘:[3000,3500,4500,6000]}

data=pd.DataFrame(data)

print(data)

结果为:

income year
0 3000 2000
1 3500 2001
2 4500 2002
3 6000 2003

data1=pd.DataFrame(data,columns=[‘year‘,‘income‘,‘outcome‘],
                          index=[‘a‘,‘b‘,‘c‘,‘d‘])
print(data1)

结果为:

year income outcome
a 2000 3000 NaN
b 2001 3500 NaN
c 2002 4500 NaN
d 2003 6000 NaN

新增加列outcome在data中没有,则用na值代替

索引的几种方式

print(data1[‘year‘])
print(data1.year)

两种索引是等价的,都是对列进行索引,结果为:

a 2000
b 2001
c 2002
d 2003
Name: year, dtype: int64

对行进行索引,则是另外一种形式

print(data1.ix[‘a‘])

结果为:

year 2000
income 3000
outcome NaN
Name: a, dtype: object

或者也可以用切片的形式

print(data1[1:3])

结果为:

year income outcome
b 2001 3500 NaN
c 2002 4500 NaN

增加和删除列

data1[‘money‘]=np.arange(4)

增加列为money

year income outcome money
a 2000 3000 NaN 0
b 2001 3500 NaN 1
c 2002 4500 NaN 2
d 2003 6000 NaN 3

del data1[‘outcome‘]

删除列结果为:

year income money
a 2000 3000 0
b 2001 3500 1
c 2002 4500 2
d 2003 6000 3

pandas中的主要索引对象以及相对应的索引方法和属性

此外还有一个reindex函数可以重新构建索引

data={‘year‘:[2000,2001,2002,2003],
     ‘income‘:[3000,3500,4500,6000]}

data1=pd.DataFrame(data,columns=[‘year‘,‘income‘,‘outcome‘],
index=[‘a‘,‘b‘,‘c‘,‘d‘])

data2=data1.reindex([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])
print(data2)

结果为:

data2=data1.reindex([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘],method=‘ffill‘)
print(data2)

使用方法后的结果为:

索引删除以及过滤等相关方法

print(data1.drop([‘a‘]))

结果为:

print(data1[data1[‘year‘]>2001])

结果为:

print(data1.ix[[‘a‘,‘b‘],[‘year‘,‘income‘]])

结果为 :

print(data1.ix[data1.year>2000,:2])

结果为:

详细的索引过滤方法如下:

dataframe的算法运算

data={‘year‘:[2000,2001,2002,2003],
‘income‘:[3000,3500,4500,6000]}

data1=pd.DataFrame(data,columns=[‘year‘,‘income‘,‘outcome‘],
index=[‘a‘,‘b‘,‘c‘,‘d‘])

data2=pd.DataFrame(data,columns=[‘year‘,‘income‘,‘outcome‘],
index=[‘a‘,‘b‘,‘c‘,‘d‘])

data1[‘outcome‘]=range(1,5)

data2=data2.reindex([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘])

print(data1.add(data2,fill_value=0))

结果为:

对dataframe进行排序

data=pd.DataFrame(np.arange(10).reshape((2,5)),index=[‘c‘,‘a‘],
            columns=[‘one‘,‘four‘,‘two‘,‘three‘,‘five‘])

print(data)

结果为:

print(data.sort_index())

结果为:

print(data.sort_index(axis=1))

结果为:

print(data.sort_values(by=‘one‘))

结果为:

print(data.sort_values(by=‘one‘,ascending=False))

结果为:

这里是对结果进行降序排列

汇总以及统计描述

data=pd.DataFrame(np.arange(10).reshape((2,5)),index=[‘c‘,‘a‘],
columns=[‘one‘,‘four‘,‘two‘,‘three‘,‘five‘])

print(data.describe())

结果为:

print(data.sum())

结果为:

print(data.sum(axis=1))

结果为:

详细约简方法

相关描述统计函数

相关系数与协方差

data=pd.DataFrame(np.random.random(20).reshape((4,5)),index=[‘c‘,‘a‘,‘b‘,‘c‘],
columns=[‘one‘,‘four‘,‘two‘,‘three‘,‘five‘])

print(data)

结果为:

print(data.one.corr(data.three))

one和three的相关系数为:

0.706077105725

print(data.one.cov(data.three))

one和three的协方差为:

0.0677896135613

print(data.corrwith(data.one))

one和所有列的相关系数:

唯一值,成员资格等方法

data=pd.Series([‘a‘,‘a‘,‘b‘,‘b‘,‘b‘,‘c‘,‘d‘,‘d‘])

print(data.unique())

结果为:

[‘a‘ ‘b‘ ‘c‘ ‘d‘]

print(data.isin([‘b‘]))

结果为:

0 False
1 False
2 True
3 True
4 True
5 False
6 False
7 False
dtype: bool

print(pd.value_counts(data.values,sort=False))

结果为:

d 2
c 1
b 3
a 2
dtype: int64

缺失值处理

data=pd.Series([‘a‘,‘a‘,‘b‘,np.nan,‘b‘,‘c‘,np.nan,‘d‘])

print(data.isnull())

结果为:

0 False
1 False
2 False
3 True
4 False
5 False
6 True
7 False
dtype: bool

print(data.dropna())

结果为:

0 a
1 a
2 b
4 b
5 c
7 d
dtype: object

print(data.ffill())

结果为:

0 a
1 a
2 b
3 b
4 b
5 c
6 c
7 d
dtype: object

print(data.fillna(0))

结果为:

0 a
1 a
2 b
3 0
4 b
5 c
6 0
7 d
dtype: object

层次化索引

可以对数据进行多维度的索引

data = pd.Series(np.random.randn(10), index=[[‘a‘, ‘a‘, ‘a‘, ‘b‘, ‘b‘, ‘b‘, ‘c‘, ‘c‘, ‘d‘, ‘d‘],
         [1, 2, 3, 1, 2, 3, 1, 2, 2, 3]])

print(data)

结果为:

print(data.index)

结果为:

MultiIndex(levels=[[‘a‘, ‘b‘, ‘c‘, ‘d‘], [1, 2, 3]],
labels=[[0, 0, 0, 1, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 1, 2]])

print(data[‘c‘])

结果为:

print(data[:,2])

结果为:

print(data.unstack())

结果为:

把数据转换成为一个dataframe

print(data.unstack().stack())

unstack()的逆运算

了解这些,应该可以进行一些常规的数据处理了。

时间: 2024-10-11 11:44:08

python pandas介绍的相关文章

python中numpy和pandas介绍

numpy和pandas是python中用于处理数据的两个库.numpy介绍:numpy用于处理array,且array中数据类型必须一致.下面以代码备注的方式介绍. #START import numpy as np v=np.array([1,2,3,4,5,6,7,8]) //array中以list的方式展现 m=np.array([[1,2,3,4,5,6,7,8], [8,7,6,5,4,3,2,1]]) h=np.array([[1,2,3,4,5,6,7,8], [8,7,6,5,

Python pandas 0.19.1 Indexing and Selecting Data文档翻译

最近在写个性化推荐的论文,经常用到Python来处理数据,被pandas和numpy中的数据选取和索引问题绕的比较迷糊,索性把这篇官方文档翻译出来,方便自查和学习,翻译过程中难免很多不到位的地方,但大致能看懂,错误之处欢迎指正~ Python pandas 0.19.1 Indexing and Selecting Data 原文链接 http://pandas.pydata.org/pandas-docs/stable/indexing.html 数据索引和选取 pandas对象中的轴标签信息

pandas介绍及环境部署

pandas介绍 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提供了大量能使我们快速便捷地处理数据的函数和方法.你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一.pandas是python里用于分析结构化数据的工具集,具有数据迁徙功能,可以处理海量数据 pandas依赖于两

Python pandas 'HDFStore requires PyTables' Issue

Python pandas 'HDFStore requires PyTables' Issue 在运行mobike.py过程中,一直报错,原因是pip install tables命令中安装的pytables文件其实是存在问题的,后续有人修正了这个问题并发布了新的tables库 因此在安装的时候 pip install tables==3.3.0 Python pandas 'HDFStore requires PyTables' Issue

【美妙的Python之中的一个】Python简单介绍及环境搭建

美妙的Python之Python简单介绍及安装         简而言之: Python 是能你无限惊喜的语言,与众不同.             1.Python:          Python英文意思为蟒蛇,故又称为蟒蛇语言,在图标设计上有所体现,贵铎·范·罗萨姆(Guido van Rossum)于1989年创立.Python的特质,简单,优雅,健壮,继承传统编程语言的强大性与通用性,同一时候兼具简单脚本的简单性.         Python的哲学:仅仅用一种方法,最好是仅仅有一种方法

python & pandas链接mysql数据库

Python&pandas与mysql连接 1.python 与mysql 连接及操作,直接上代码,简单直接高效: 1 import MySQLdb 2 3 try: 4 5 conn = MySQLdb.connect(host='localhost',user='root',passwd='×××××',db='test',charset='utf8') 6 7 cur = conn.cursor() 8 9 cur.execute('create table user(id int,nam

python - day01 介绍

01. python - 介绍 python - 简单介绍:  dsadasdasdashttps://www.python.org/ftp/python/

python 模块介绍 - Base16, Base32, Base64 数据编码

简介 功能:RFC 3548: Base16, Base32, Base64 数据编码.转换二进制数据为适合明文协议传输的 ASCII 序列.转换8bits 为每个字节包含 6,5 或 4bits 的有效数据,比如 SMTP, URL 的一部分或者 HTTP POST 的一部分.参考:RFC 3548.编码算法不同于 uuencode.类型:标准库相关模块:uu, binhex, uu, quopri Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法.由于 2 的 6 次方

笔记1:Python简单介绍

Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python已经成为最受欢迎的程序设计语言之一.2011年1月,它被TIOBE编程语言排行榜评为2010年度语言.Python语法简洁而清晰,具有丰富和强大的类库,常被称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起. 人们为什么使用Python? 提高开发者效率 提高软件质量 程序的可移植性 内置