Python数据分析库pandas基本操作方法


Posted in Python onApril 08, 2018

pandas是什么?

Python数据分析库pandas基本操作方法

是它吗?

。。。。很显然pandas没有这个家伙那么可爱。。。。

我们来看看pandas的官网是怎么来定义自己的:

pandas is an open source, easy-to-use data structures and data analysis tools for the Python programming language.

很显然,pandas是python的一个非常强大的数据分析库!

让我们来学习一下它吧!

1.pandas序列

import numpy as np 
import pandas as pd 
 
s_data = pd.Series([1,3,5,7,np.NaN,9,11])#pandas中生产序列的函数,类似于我们平时说的数组 
print s_data

Python数据分析库pandas基本操作方法

2.pandas数据结构DataFrame

import numpy as np 
import pandas as pd 
 
#以20170220为基点向后生产时间点 
dates = pd.date_range('20170220',periods=6) 
#DataFrame生成函数,行索引为时间点,列索引为ABCD 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
print 
print data.shape 
print 
print data.values

Python数据分析库pandas基本操作方法

3.DataFrame的一些操作(1)

import numpy as np
import pandas as pd
#设计一个字典
d_data = {'A':1,'B':pd.Timestamp('20170220'),'C':range(4),'D':np.arange(4)}
print d_data
#使用字典生成一个DataFrame
df_data = pd.DataFrame(d_data)
print df_data
#DataFrame中每一列的类型
print df_data.dtypes
#打印A列
print df_data.A
#打印B列
print df_data.B
#B列的类型
print type(df_data.B)

Python数据分析库pandas基本操作方法

4.DataFrame的一些操作(2)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods=6) 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
print 
#输出DataFrame头部数据,默认为前5行 
print data.head() 
#输出输出DataFrame第一行数据 
print data.head(1) 
#输出DataFrame尾部数据,默认为后5行 
print data.tail() 
#输出输出DataFrame最后一行数据 
print data.tail(1) 
#输出行索引 
print data.index 
#输出列索引 
print data.columns 
#输出DataFrame数据值 
print data.values 
#输出DataFrame详细信息 
print data.describe()

Python数据分析库pandas基本操作方法

5.DataFrame的一些操作(3)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods=6) 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
print 
#转置 
print data.T 
#输出维度信息 
print data.shape 
#转置后的维度信息 
print data.T.shape 
#将列索引排序 
print data.sort_index(axis = 1) 
#将列索引排序,降序排列 
print data.sort_index(axis = 1,ascending=False) 
#将行索引排序,降序排列 
print data.sort_index(axis = 0,ascending=False) 
#按照A列的值进行升序排列 
print data.sort_values(by='A')

Python数据分析库pandas基本操作方法

6.DataFrame的一些操作(4)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods=6) 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
#输出A列 
print data.A 
#输出A列 
print data['A'] 
#输出3,4行 
print data[2:4] 
#输出3,4行 
print data['20170222':'20170223'] 
#输出3,4行 
print data.loc['20170222':'20170223'] 
#输出3,4行 
print data.iloc[2:4] 
输出B,C两列 
print data.loc[:,['B','C']]

Python数据分析库pandas基本操作方法

7.DataFrame的一些操作(5)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods=6) 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
#输出A列中大于0的行 
print data[data.A > 0] 
#输出大于0的数据,小于等于0的用NaN补位 
print data[data > 0] 
#拷贝data 
data2 = data.copy() 
print data2 
tag = ['a'] * 2 + ['b'] * 2 + ['c'] * 2 
#在data2中增加TAG列用tag赋值 
data2['TAG'] = tag 
print data2 
#打印TAG列中为a,c的行 
print data2[data2.TAG.isin(['a','c'])]

Python数据分析库pandas基本操作方法

8.DataFrame的一些操作(6)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods=6) 
data = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) 
print data 
#将第一行第一列元素赋值为100 
data.iat[0,0] = 100 
print data 
#将A列元素用range(6)赋值 
data.A = range(6) 
print data 
#将B列元素赋值为200 
data.B = 200 
print data 
#将3,4列元素赋值为1000 
data.iloc[:,2:5] = 1000 
print data

Python数据分析库pandas基本操作方法

9.DataFrame的一些操作(7)

import numpy as np 
import pandas as pd 
 
dates = pd.date_range('20170220',periods = 6) 
df = pd.DataFrame(np.random.randn(6,4) , index = dates , columns = list('ABCD')) 
print df 
#重定义索引,并添加E列 
dfl = df.reindex(index = dates[0:4],columns = list(df.columns)+['E']) 
print dfl 
#将E列中的2,3行赋值为2 
dfl.loc[dates[1:3],'E'] = 2 
print dfl 
#去掉存在NaN元素的行 
print dfl.dropna() 
#将NaN元素赋值为5 
print dfl.fillna(5) 
#判断每个元素是否为NaN 
print pd.isnull(dfl) 
#求列平均值 
print dfl.mean() 
#对每列进行累加 
print dfl.cumsum()

Python数据分析库pandas基本操作方法

10.DataFrame的一些操作(8)

import numpy as np 
import pandas as pd 
dates = pd.date_range('20170220',periods = 6) 
df = pd.DataFrame(np.random.randn(6,4) , index = dates , columns = list('ABCD')) 
print df 
dfl = df.reindex(index = dates[0:4],columns = list(df.columns)+['E']) 
print dfl 
#针对行求平均值 
print dfl.mean(axis=1) 
#生成序列并向右平移两位 
s = pd.Series([1,3,5,np.nan,6,8],index = dates).shift(2) 
print s 
#df与s做减法运算 
print df.sub(s,axis = 'index') 
#每列进行累加运算 
print df.apply(np.cumsum) 
#每列的最大值减去最小值 
print df.apply(lambda x: x.max() - x.min())

Python数据分析库pandas基本操作方法

11.DataFrame的一些操作(9)

import numpy as np 
import pandas as pd 
dates = pd.date_range('20170220',periods = 6) 
df = pd.DataFrame(np.random.randn(6,4) , index = dates , columns = list('ABCD')) 
print df 
#定义一个函数 
def _sum(x): 
 print(type(x)) 
 return x.sum() 
#apply函数可以接受一个函数作为参数 
print df.apply(_sum) 
s = pd.Series(np.random.randint(10,20,size = 15)) 
print s 
#统计序列中每个元素出现的次数 
print s.value_counts() 
#返回出现次数最多的元素 
print s.mode()

Python数据分析库pandas基本操作方法

12.DataFrame的一些操作(10)

import numpy as np 
import pandas as pd 
 
df = pd.DataFrame(np.random.randn(10,4) , columns = list('ABCD')) 
print df 
#合并函数 
dfl = pd.concat([df.iloc[:3],df.iloc[3:7],df.iloc[7:]]) 
print dfl 
#判断两个DataFrame中元素是否相等 
print df == dfl

Python数据分析库pandas基本操作方法

13.DataFrame的一些操作(11)

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randn(10,4) , columns = list('ABCD'))
print df
left = pd.DataFrame({'key':['foo','foo'],'lval':[1,2]})
right = pd.DataFrame({'key':['foo','foo'],'rval':[4,5]})
print left
print right
#通过key来合并数据
print pd.merge(left,right,on='key')
s = pd.Series(np.random.randint(1,5,size = 4),index = list('ABCD'))
print s
#通过序列添加一行
print df.append(s,ignore_index = True)

Python数据分析库pandas基本操作方法

14.DataFrame的一些操作(12)

import numpy as np 
import pandas as pd 
df = pd.DataFrame({'A': ['foo','bar','foo','bar', 
       'foo','bar','foo','bar'], 
     'B': ['one','one','two','three', 
       'two','two','one','three'], 
     'C': np.random.randn(8), 
     'D': np.random.randn(8)}) 
print df 
print 
#根据A列的索引求和 
print df.groupby('A').sum() 
print 
#先根据A列的索引,在根据B列的索引求和 
print df.groupby(['A','B']).sum() 
print 
#先根据B列的索引,在根据A列的索引求和 
print df.groupby(['B','A']).sum()

Python数据分析库pandas基本操作方法

15.DataFrame的一些操作(13)

import pandas as pd 
import numpy as np 
#zip函数可以打包成一个个tuple 
tuples = list(zip(*[['bar', 'bar', 'baz', 'baz', 
      'foo', 'foo', 'qux', 'qux'], 
     ['one', 'two', 'one', 'two', 
      'one', 'two', 'one', 'two']])) 
print tuples 
#生成一个多层索引 
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) 
print index 
print 
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B']) 
print df 
print 
#将列索引变成行索引 
print df.stack()

Python数据分析库pandas基本操作方法

16.DataFrame的一些操作(14)

import pandas as pd 
import numpy as np 
 
tuples = list(zip(*[['bar', 'bar', 'baz', 'baz', 
      'foo', 'foo', 'qux', 'qux'], 
     ['one', 'two', 'one', 'two', 
      'one', 'two', 'one', 'two']])) 
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) 
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B']) 
print df 
print 
stacked = df.stack() 
print stacked 
#将行索引转换为列索引 
print stacked.unstack() 
#转换两次 
print stacked.unstack().unstack()

Python数据分析库pandas基本操作方法

17.DataFrame的一些操作(15)

import pandas as pd 
import numpy as np 
df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three'] * 3, 
     'B' : ['A', 'B', 'C'] * 4, 
     'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2, 
     'D' : np.random.randn(12), 
     'E' : np.random.randn(12)}) 
print df 
#根据A,B索引为行,C的索引为列处理D的值 
print pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C']) 
#感觉A列等于one为索引,根据C列组合的平均值 
print df[df.A=='one'].groupby('C').mean()

Python数据分析库pandas基本操作方法

18.时间序列(1)

import pandas as pd 
import numpy as np 
 
#创建一个以20170220为基准的以秒为单位的向前推进600个的时间序列 
rng = pd.date_range('20170220', periods=600, freq='s') 
print rng 
#以时间序列为索引的序列 
print pd.Series(np.random.randint(0, 500, len(rng)), index=rng)

Python数据分析库pandas基本操作方法

19.时间序列(2)

import pandas as pd 
import numpy as np 
 
rng = pd.date_range('20170220', periods=600, freq='s') 
ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng) 
#重采样,以2分钟为单位进行加和采样 
print ts.resample('2Min', how='sum') 
#列出2011年1季度到2017年1季度 
rng1 = pd.period_range('2011Q1','2017Q1',freq='Q') 
print rng1 
#转换成时间戳形式 
print rng1.to_timestamp() 
#时间加减法 
print pd.Timestamp('20170220') - pd.Timestamp('20170112') 
print pd.Timestamp('20170220') + pd.Timedelta(days=12)

Python数据分析库pandas基本操作方法

20.数据类别

import pandas as pd 
import numpy as np 
 
df = pd.DataFrame({"id":[1,2,3,4,5,6], "raw_grade":['a', 'b', 'b', 'a', 'a', 'e']}) 
print df 
#添加类别数据,以raw_grade的值为类别基础 
df["grade"] = df["raw_grade"].astype("category") 
print df 
#打印类别 
print df["grade"].cat.categories 
#更改类别 
df["grade"].cat.categories = ["very good", "good", "very bad"] 
print df 
#根据grade的值排序 
print df.sort_values(by='grade', ascending=True) 
#根据grade排序显示数量 
print df.groupby("grade").size()

Python数据分析库pandas基本操作方法

21.数据可视化

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
 
ts = pd.Series(np.random.randn(1000), index=pd.date_range('20170220', periods=1000)) 
ts = ts.cumsum() 
print ts 
ts.plot() 
plt.show()

Python数据分析库pandas基本操作方法

22.数据读写

import pandas as pd 
import numpy as np 
 
df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD')) 
#数据保存,相对路径 
df.to_csv('data.csv') 
#数据读取 
print pd.read_csv('data.csv', index_col=0)

Python数据分析库pandas基本操作方法

数据被保存到这个文件中:

Python数据分析库pandas基本操作方法

打开看看:

Python数据分析库pandas基本操作方法

以上这篇Python数据分析库pandas基本操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python正则表达式的使用范例详解
Aug 08 Python
Tornado高并发处理方法实例代码
Jan 15 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
Python将文字转成语音并读出来的实例详解
Jul 15 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
Python接口自动化判断元素原理解析
Feb 24 Python
django admin后管定制-显示字段的实例
Mar 11 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
Python获取指定网段正在使用的IP
Dec 14 Python
浅谈pandas中shift和diff函数关系
Apr 08 #Python
使用DataFrame删除行和列的实例讲解
Apr 08 #Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 #Python
pandas创建新Dataframe并添加多行的实例
Apr 08 #Python
DataFrame中去除指定列为空的行方法
Apr 08 #Python
python 定时修改数据库的示例代码
Apr 08 #Python
对Python中DataFrame按照行遍历的方法
Apr 08 #Python
You might like
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
php实现图片缩放功能类
2013/12/18 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
vue快捷键与基础指令详解
2017/06/01 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
python复制与引用用法分析
2015/04/08 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
python实现图书借阅系统
2019/02/20 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
linux 下selenium chrome使用详解
2020/04/02 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
幼儿园中班教学反思
2014/02/10 职场文书
yy司仪主持词
2014/03/22 职场文书
明信片寄语大全
2014/04/08 职场文书
2014年信访工作总结
2014/11/17 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
入党介绍人意见范文
2015/06/01 职场文书
Python制作表白爱心合集
2022/01/22 Python
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript