python(6):Scipy之pandas
pandas下面的数据结构是Series , DataFrame
在字典中, key 与 value对应, 但是key value 不是独立的, 但是在Series 中index 与value 是独立的, 它在某些应用中国有比字典更加强大的功能.
(一)Series
Series是有序一维数组, 由 数据+索引 组成
import pandas as pd
s=pd.Series([1,2.0,'a'])
print(s)
#0 1
#1 2
#2 a
自带索引 0 ,1, 2...
也可以自己设置索引, 访问数据就是 s[idx]
import pandas as pd
s=pd.Series(['apple','pig','table'],index=[1,2,3])
print(s)
#1 apple
#2 pig
#3 table
print(s[1]) # apple 访问数据
简单计算
import numpy as np
import pandas as pd
y=pd.Series([3,5,6],index=['a','b','c'])
print(y)
#a 3
#b 5
#c 6
print(y[1]) #
print(y*2)#作用在value上 变6 10 12
yy=np.exp(y)
print(yy)
#a 20.085537
#b 148.413159
#c 403.428793
Series的数据对齐
data={'A':100,'B':90} #字典
sindex=['A','B','C']
x=pd.Series(data,index=sindex)
# 'c'这个索引在data中没有 则value=nan
print(x)
print(x.index)
print(x.values)
print(pd.isnull(x)) # 检测哪些值是空的
A 100.0
B 90.0
C NaN
dtype: float64
Index(['A', 'B', 'C'], dtype='object')
[100. 90. nan]
A False
B False
C True
dtype: bool
两个Series相加会怎么样?
import pandas as pd
a=pd.Series([20,21,42],index=['a','b','c'])
b=pd.Series([20,18,40],index=['a','e','c'])
a+b
#a 40.0
#b NaN
#c 82.0
#e NaN
#dtype: float64
相同index 的相加, a,b 中非共有的用nan
pandas还可以产生时间序列
import pandas as pd
dates=pd.date_range('',periods=5) #每一天,包括周末
print(dates)
DatetimeIndex(['2017-12-11', '2017-12-12', '2017-12-13', '2017-12-14',
'2017-12-15'],
dtype='datetime64[ns]', freq='D').
(二) DataFrame
pandas的模块中 Series对应一维序列, DataFrame 对应表格型的数据结构
可以把DataFrame 看成是共用同一个index 的Series 集合
import numpy as np
import pandas as pd
# 由array 创建
d1=pd.DataFrame(np.random.randn(3,3),index=range(1,4),columns=list('ABC'))
print(d1)
#由字典创建DataFrame
d2={'name':['alice','mike','jason'],'pay':[10,20,30]} #默认index是从0开始的0 1 2 ..
d2=pd.DataFrame(d2)
print(d2)
A B C
1 -0.024970 0.681228 -1.575077
2 -0.470925 1.239218 2.425803
3 0.758001 -0.179529 -0.535435
name pay
0 alice 10
1 mike 20
2 jason 30
上述d2的分析
print(d2.index) # 行索引 RangeIndex(start=0, stop=3, step=1)
print(d2.columns) # 列索引 Index(['name', 'pay'], dtype='object')
print(d2.values) # 3*2
#[['alice' 10]
# ['mike' 20]
# ['jason' 30]]
d2.index=[1,3,5] #修改索引
d2['name']='alice' # 将name列的数据全部改为了alice
del d2['pay'] # 删除一列
查看数据
import pandas as pd
import numpy as np
d3=np.array([('a',100),('b',200),('c',300)])
d3=pd.DataFrame(d3,index=range(1,4),columns=['name','pay'])
print(d3['name'])#访问name 那一列,也可以print(d3.name)
#1 a
#2 b
#3 c
print(d3.iloc[:2,1])#前两行,value的第2列元素
#1 100
#2 200
统计功能
d3.pay.min() # 最低工资的值
Out[127]: '' d3[d3.pay>''] # 工资大于180的人
Out[129]:
name pay
2 b 200
3 c 300
实例: 加总每个人的工资
import pandas as pd
index=[1,2,3,4]
h=np.array([('alice',4),('kitty',3),('bob',6),('nancy',2)])
hi=pd.DataFrame(h,index,columns=['name','pay'])
print(hi)
#for i in range(1,len(hi)+1): #报错!!
# print(hi[i])
xx=hi.pay # 也是一个DataFrame
for i in range(1,len(xx)+1): #由于index是从1开始的
print(xx[i])
xx[i]=float(xx[i]) # 为了后续的加总 print(hi.groupby('name').sum()) #将重复的放在一起,A 出现两次加总为一项! 42
print(hi)#不改变原来的hi
name pay
1 alice 4
2 kitty 3
3 bob 6
4 alice 2
4
3
6
2
pay
name
alice 6.0
bob 6.0
kitty 3.0
(三) pandas中的作图
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,1)
print(len(x)) #
y=np.sin(4*np.pi*x)*np.exp(-5*x)
plt.plot(x,y,'o')
fig = plt.figure() #新建一个图形窗口,否则会画在一起
a=pd.Series([10,15,2,3,5])
plt.plot(a)
实例
import pandas as pd
a=[(10,12),(15,7),(2,9)]
b=[1,2,3]
data=pd.DataFrame(a,index=b,columns=['v1','v2'])
data.plot() #两条线
结果
import pandas as pd
import matplotlib.pyplot as plt
a=pd.Series([10,23,12,34,16])
x=a.index
y=a.values
plt.plot(x,y,'r--')
plt.title('line')
plt.xlabel('time')
plt.ylabel('quantity') t=np.arange(0.,4.,0.01) # 画在一起的
plt.plot(t,t,t,t+1,t,t**2) #三条曲线
python(6):Scipy之pandas的更多相关文章
- ubantu下安装pip,python,pycharm,numpy,scipy,matplotlibm,pandas 以及sklearn
ubuntu 安装 pip 及 pip 常用命令: https://blog.csdn.net/danielpei1222/article/details/62969815 ubuntu下不同版本py ...
- python安装numpy和pandas
最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...
- python(5):scipy之numpy介绍
python 的scipy 下面的三大库: numpy, matplotlib, pandas scipy 下面还有linalg 等 scipy 中的数据结构主要有三种: ndarray(n维数组), ...
- [转] python安装numpy和pandas
最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了.首要条件,python版本必须 ...
- Ubuntu16.04下安装配置numpy,scipy,matplotlibm,pandas 以及sklearn+深度学习tensorflow配置+Keras2.0.6(非Anaconda环境)
1.ubuntu镜像源准备(防止下载过慢): 参考博文:http://www.cnblogs.com/top5/archive/2009/10/07/1578815.html 步骤如下: 首先,备份一 ...
- python及numpy,pandas易混淆的点
https://blog.csdn.net/happyhorizion/article/details/77894035 初接触python觉得及其友好(类似matlab),尤其是一些令人拍案叫绝不可 ...
- 【转载】python安装numpy和pandas
转载:原文地址 http://www.cnblogs.com/lxmhhy/p/6029465.html 最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装 ...
- numpy、scipy、pandas
以下分别是numpy.Scipy.pandas的简介.虽然这些包提供的一些结构比python自身的“更高级.更高效”,更高级是因为它们能完成更高级的任务,但是,学习的时候尽量不要和python割裂开认 ...
- Anaconda 安装和使用Numpy、Scipy、pandas、Scikit-learn
Anaconda 安装和使用 https://www.cnblogs.com/liruihuan/p/9101613.html 最近看了些关于数据分析的书,想系统的整理下相关知识,算是学习笔记吧,也希 ...
随机推荐
- 关于java11 - 应该知道的
Local Variable Type Inference# HTTP Client# Collections# Streams# Optionals# Strings# InputStreams# ...
- vue工具知识
1.访问数据自动格式化 Google jsonview插件(已用) 2.字体图标库. https://icomoon.io/ 上传svg可生成字体图标
- js对象遍历输出顺序错乱的问题
一.js对象遍历顺序错乱的原因 下边就来实践一下: var obj={'3':'ccc',name:'abc',age:23,school:'sdfds',class:'dfd',hobby:'dsf ...
- Nginx系列6:对称加密与非对称加密各自的应用场景
强推:推荐一篇通俗易懂的对称加密和非对称加密的文章:https://segmentfault.com/a/1190000004461428 推荐一篇文章:对称加密算法与非对称加密算法的优缺点:http ...
- 论文笔记系列-iCaRL: Incremental Classifier and Representation Learning
导言 传统的神经网络都是基于固定的数据集进行训练学习的,一旦有新的,不同分布的数据进来,一般而言需要重新训练整个网络,这样费时费力,而且在实际应用场景中也不适用,所以增量学习应运而生. 增量学习主要旨 ...
- 【转】Python模块学习 - fnmatch & glob
[转]Python模块学习 - fnmatch & glob 介绍 fnmatch 和 glob 模块都是用来做字符串匹配文件名的标准库. fnmatch模块 大部分情况下使用字符串匹配查找特 ...
- (转载)ECCV 2018:IBN-Net:打开域适应的新方式
(本文转自极视角) 本文由香港中文大学发表于ECCV2018,论文探索了IN和BN的优劣,据此提出的IBN-Net在语义分割的域适应任务上取得了十分显著的性能提升. 论文地址:https://arxi ...
- hibernate框架学习之数据查询(HQL)
lHibernate共提供5种查询方式 •OID数据查询方式 •HQL数据查询方式 •QBC数据查询方式 •本地SQL查询方式 •OGN数据查询方式 OID数据查询方式 l前提:已经获取到了对象的OI ...
- UR#13 SRAND
总感觉这位大仙讲的很清楚:bztminamoto 题意 题目讲的是求 l~r 内所有数的次大质因子,这里设 f(x) 为 x 的次大质因子 我们差分一下就变成求两个前缀和信息了 按照套路,我们考虑 S ...
- ASP.NET 验证码绘制
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...