一、pandas模块是基于Numpy模块的,pandas的主要数据结构是Series和DadaFrame,下面引入这样的约定:

from pandas import Series,DataFrame

import pandas as pd

二、主要数据结构对象

1.Series是一种类似一维数组的对象,由一组数据(各种numpy数据类型)与其相对应的数据标签组成(即索引)组成。可以通过其values和index属性来获取其数组表示形式和索引对象:

>>> from pandas import Series,DataFrame
>>> import pandas as pd
>>> obj=Series([1,3,5,7],index=['a','b','c','d'])
>>> obj
a 1
b 3
c 5
d 7
dtype: int64
>>> obj.values
array([1, 3, 5, 7], dtype=int64)
>>> obj.index
Index(['a', 'b', 'c', 'd'], dtype='object')

可以通过索引的方式选取Series中的单一值或一组值:

>>> obj[['a','c']]
a 1
c 5
dtype: int64

Series可以看成是一个定长的字典,因为它是索引值到数据值的一个映射。它可以用在许多原本需要字典参数的函数中:

>>> 'a' in obj
True
>>> 1 in obj
False

如果数据放在一个字典中,你可以直接用过这个字典创建series;

>>> sdata={'Ohio':3500,'Texas':7100,'Oregon':1600,'Utah':500}
>>> obj2=Series(sdata)
>>> obj2
Ohio 3500
Oregon 1600
Texas 7100
Utah 500
dtype: int64

如果只传入一个字典,那么Series重的索引就是原字典的键:

>>> states=['California','Ohio','Orgen','Texas']
>>> obj3=Series(sdata,index=states)
>>> obj3
California NaN
Ohio 3500.0
Orgen NaN
Texas 7100.0
dtype: float64

在此例中,sdata中跟states索引中相匹配的值会被找出来放在相应的位置上。(NaN表示缺失值)

Series的一个重要功能就是在算术运算中会自动对齐不同索引的数据。

>>> obj2+obj3
California NaN
Ohio 7000.0
Oregon NaN
Orgen NaN
Texas 14200.0
Utah NaN
dtype: float64

2.DataFrame是一个表格型的数据结构,它含有一组有序的列,每列的数据类型可以不一样。DataFrame既有行索引,也有列索引,可以看做是由Series组成的字典(共用一个索引)。

创建数据框时会自动建立索引如下:

>>> data={'states':['Ohio','Ohio','Ohio','Nevada','Nevada'],\
'year':[2000,2001,2002,2001,2002],\
'pop':[1.6,1.7,3.6,2.4,2.9]}
>>> from pandas import Series,DataFrame
>>> import pandas as pd
>>> frame=DataFrame(data)
>>> frame
pop states year
0 1.6 Ohio 2000
1 1.7 Ohio 2001
2 3.6 Ohio 2002
3 2.4 Nevada 2001
4 2.9 Nevada 2002

如果指定了列顺序,那么DataFrame就会按照指定的列顺序进行排列:

>>> DataFrame(data,columns=['year','states','pop'])
year states pop
0 2000 Ohio 1.6
1 2001 Ohio 1.7
2 2002 Ohio 3.6
3 2001 Nevada 2.4
4 2002 Nevada 2.9

可以通过字典标记或属性的方式,将DataFrame的列获取为一个Series:

>>> frame['year']
0 2000
1 2001
2 2002
3 2001
4 2002
Name: year, dtype: int64
>>> frame.year
0 2000
1 2001
2 2002
3 2001
4 2002
Name: year, dtype: int64

返回的Series拥有跟原DataFrame相同的索引号,其name属性也被相应的设置好了。

行可以通过位置或名称的方式进行获取,比如用索引字段ix:

>>> frame.ix[3]
pop 2.4
states Nevada
year 2001
Name: 3, dtype: object

为不存在的列赋值相当于创建一个新列,del关键字用于删除

>>> frame['eastern']=frame.states
>>> frame
pop states year eastern
0 1.6 Ohio 2000 Ohio
1 1.7 Ohio 2001 Ohio
2 3.6 Ohio 2002 Ohio
3 2.4 Nevada 2001 Nevada
4 2.9 Nevada 2002 Nevada
>>> del frame['eastern']

>>> frame.columns
Index(['pop', 'states', 'year'], dtype='object')

三、数据处理

1.读取和写出数据

a.读取csv数据和excel数据,读取出来的数据都是DataFrame结构

df=pd.read_csv('wenjian.csv')

df=pd.read_excel('wenjian.xlsx','sheet1')

b.写出数据

df.to_csv('newwenjian.csv')

df.to_excel('newwenjian.excel',sheet_name='sheet2')

2.查看读取的数据

df.head(5)  #查看前5行数据

df.tail(5)  #查看后5行数据

df.columns  #查看列名称

3.对数据框的列名重命名

a. df2=df.rename(columns={'old_columnname':'new_columnname'}) #这个方法会在命名新的列时会创建一个新的数据框

b. df.rename(columns={'old_columnname':'new_columnname'},inplace=True) #这个方法可以在已存在的数据框上修改

4.选取列或者行

a. df.['cloumnname1',cloumnname2']  #选取子数据框

b.过滤记录

df[df['column1']>10]

df[(df['column1']>10)&df['column2']==30)]

df[(df['column1']>10)|df['column2']==30)]

5.处理缺失数据

a。df.dropna() #删除含有缺失值的行或列

b。填充缺失值

df.fillna(value=5) #用5填充缺失值

mean=df['column1'].mean()

df['column1'].fillna(mean)

6.创建新的列

df.['newcolumn1']=df.['column2'] #新的列是column2的复制

df.['newcolumn2']=df.['column2']+10 #对column2加10,再创建新的列

df.['newcolumn3']=df.['column1']+df.['column2'] #将列1和列2的元素相加,然后创建新的列

7.聚合函数

a。 groupby允许对数据进行3种操作

将数据进行分组、对每个组单独应用一个函数、对数据结果进行组合

df.groupby('column1').sum()

df.groupby('column1','column2').count()

b.建立数据透视表,同excel一样,有3个元素:index,cloumns和values

pd.pivot_table(df,values='column1',index=['column2','column3'],columns=['column4'])

默认情况下,values是对列进行求和,可以通过aggfunc属性进行更改

pd.pivot_table(df,values='column1',index=['column2','column3'],columns=['column4'],aggfunc=len) #计数

c。列联表

pd.crosstab(df.column1,df.cloumn2)

8.数据框的链接(类似sql查询)

a. Concatenate连接函数  pd.concat([df1,df2])

b. Merge函数:可以左连接,右连接和内连接

pd.merge(df1,df2,on='column1',how='inner')

pd.merge(df1,df2,on='column1',how='left')

pd.merge(df1,df2,on='column1',how='right')

pd.merge(df1,df2,on='column1',how='outer')

9。对数据框或者其列或者其元素应用函数

a。map函数:对一个series的每个元素进迭代运用这个函数

df['column1'].map(lambda x:10+x) #对column1的每个元素加10

df['column2'].map(lambda x:'AV'+x) #合并“AV”和column2的每个元素(列的格式是string)

b。apply函数:沿着任何轴应用某个函数

df[['column1','column2']].apply(sum) #返回column1和column2的和

c。applymap函数:可以对数据框的每个元素应用这个函数

func=lambda x:x+2

df.applymap(func)

10.识别唯一值

df.['column1'].unique() #返回column1的唯一值

11.基本的统计描述

a.describe函数:会返回数据集的(计数,均值,方差,最小值,最大值等基本统计描述指标)

df.describe()

b.covariance函数:协方差

df.cov()

c.correlation函数:相关系数

df.corr()

python之pandas模块的更多相关文章

  1. 使用Python的pandas模块、mplfinance模块、matplotlib模块绘制K线图

    目录 pandas模块.mplfinance模块和matplotlib模块介绍 pandas模块 mplfinance模块和matplotlib模块 安装mplfinance模块.pandas模块和m ...

  2. Python数据分析 Pandas模块 基础数据结构与简介(一)

    pandas 入门 简介 pandas 组成 = 数据面板 + 数据分析工具 poandas 把数组分为3类 一维矩阵:Series 把ndarray强大在可以存储任意数据类型可以专门处理时间数据 二 ...

  3. Python中pandas模块解析

    Pandas基于两种数据类型: series 与 dataframe . 1.Series 一个series是一个一维的数据类型,其中每一个元素都有一个标签.类似于Numpy中元素带标签的数组.其中, ...

  4. import pandas as pd Python安装pandas模块

    在学习python过程中需要用到一个叫pandas的模块,在pycharm中安装时总是出错. 千般百度折腾还是无果,后来发现它需要安装很多依赖包.就问你气不气~ 需要手动安装啊,千万记住,这里有个py ...

  5. python安装pandas模块

    直接安装时报错了 localhost:~ ligaijiang$ pip3 install pandas Collecting pandas Downloading https://files.pyt ...

  6. python之pandas模块高级用法

    一 agg,聚合,可以使用内置的函数 >>> import pandas as pd >>> import numpy as np >>> pp ...

  7. Python数据分析 Pandas模块 基础数据结构与简介(二)

    重点方法 分组:groupby('列名') groupby(['列1'],['列2'........]) 分组步骤: (spiltting)拆分 按照一些规则将数据分为不同的组 (Applying)申 ...

  8. Python 数据处理扩展包: numpy 和 pandas 模块介绍

    一.numpy模块 NumPy(Numeric Python)模块是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list str ...

  9. 关于Python pandas模块输出每行中间省略号问题

    关于Python数据分析中pandas模块在输出的时候,每行的中间会有省略号出现,和行与行中间的省略号....问题,其他的站点(百度)中的大部分都是瞎写,根本就是复制黏贴以前的版本,你要想知道其他问题 ...

随机推荐

  1. 我和小美的撸码日记(3)之一句话搞定MVC表单页数据绑定与提交

    “尼玛哥,你今天有空么?” “今天周日呀,怎么会没空,你这是要约么?麻辣烫凉皮我都吃,在哪儿,我一会儿就到.” “约你妹呀,我昨天都加一天班了,东西到现在还没搞完,你给我快点过来呀,我需要你!” “别 ...

  2. iOS 两种方法实现左右滑动出现侧边菜单栏 slide view

      现在很多的APP中都有slide view,左右滑动出现侧边菜单栏的功能,Weico这个应用就有. 网上有很多第三方的类库实现了这种效果,其实自己代码写的话也是很简单的,下面我将介绍两种方法实现s ...

  3. 编译recovery及过程中的部分错误解决

    你必须使用32位或64位Ubuntu系统,关于如何建立编译环境和同步源码的指导,请自己查找有关指导的文章. 1, 安装所需要的包 2, 建立编译的环境,并同步CWM所需的源码,CyanogenMod源 ...

  4. C#反射 获取程序集信息和通过类名创建类实例(转载)

    C#反射获取程序集信息和通过类名创建类实例 . System.Reflection 命名空间:包含通过检查托管代码中程序集.模块.成员.参数和其他实体的元数据来检索其相关信息的类型. Assembly ...

  5. Linux tr 命令使用

    man tr: TR(1) User Commands TR(1) NAME tr - translate or delete characters SYNOPSIS tr [OPTION]... S ...

  6. bzoj有趣的题目

    你会发现bzoj上好多题AC率高的让人不敢想象 其实是因为数据没发,所以被n个人水过了-- 1142 1167 1351 1354 1359 1482 2812 3056 1469 我有特殊的减少代码 ...

  7. c语言sizeof与strlen的区别

    #include <stdio.h> #include <stdlib.h> #include <string.h> //strlen与sizeof的区别 //st ...

  8. alert 在手机浏览器会显示网址,怎么能去掉这个网址

    之前就看到有人发过这帖子,现在自己也遇到这问题了. 目前想到的一个解决方案,是用jquery的模拟的alert插件进行代替,可是找的几个插件都不能实现alert的阻塞功能.怎么破 ,具体解决方案如下: ...

  9. PHP设计模式笔记五:策略模式 -- Rango韩老师 http://www.imooc.com/learn/236

    策略模式 1.概述:策略模式,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式称为策略模式 例如:一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不 ...

  10. 实战ffs函数

    这个函数是返回整形的最低位1的位置 自己写是这个样子的: /* Find the first bit set in I. */ int lx_ffs(int i) { int index = 0, r ...