python高性能web框架,python高性能框架
序
我想我学到了很多关于如何使用R处理表格数据的知识。
本文主要讨论如何在Python上处理表型数据。说到Python数据处理,就不得不提熊猫了。
Pandas是Python数据处理的核心库,提供快速、灵活、清晰的数据结构,便于直接处理结构化和关系型数据。
Panda适用于许多不同类型的数据:
具有不同类型列的表数据,如Excel表或SQL表
有序和无序(不一定是固定频率)的时间序列数据。
任何带有行和列标签的矩阵数据(相同或不同的数据)))))。
其他格式的观察/统计数据集。实际上,数据可以放在pandas数据结构中,没有标记。
熊猫的主要数据结构是序列(一维)和数据帧(二维)。这两种数据结构可以支持金融、统计、社会科学、工程等领域的许多数据。
DataFrame比R语言中的data.frame提供了更丰富的功能。
Pandas是基于NumPy开发的,可以与其他第三方科学计算库完全集成。
如果能熟练使用熊猫,可以在数据处理方面做的更多。它的优点我就不介绍了,言归正传。
固定
如果您的系统上安装了Anaconda environment,将会自动安装与公共数据科学相关的库,如pandas、numpy和matplotlib。
如果没有使用Anaconda,可以使用它。
Pip安装熊猫
我一般推荐使用Anaconda环境,但是它真的很有用。如果您仍然不知道如何配置Anaconda的安装,您可以找到我的上一篇文章。那里有详细的说明。
数据结构
本节首先介绍熊猫的基本数据结构。
当然,要使用这个包,必须先导入。此外,有些函数用于numpy。标准导入方法是
In [1]:将numpy作为np导入
在[2]:导入熊猫作为PD
1.塞利茨
Series是一个带标签的一维数组,可以包含任何数据类型的数据,包括整数、浮点数、字符串和Python对象。这个标签叫做index,可以使用pd来创建。串联函数。
S=PD.series (data,index=index))。
其中数据可以
Python词典
多维数组
标量值(例如,5))。
索引是相应标签的列表。根据数据的类型,可以分为以下几类。
多维数组
如果数据是多维数组,则索引的长度必须与数据的长度匹配。如果未指定index参数,将自动创建增量值index [0,Len,-1]。
在[3]中:s=PD.series (NP.random.randn ) 5,index=[a , b , c , d , e]).
在[4]: s
Out[4]:
一个0.469112
b -0.282863
c -1.509059
d -1.135632
e 1.212112
数据类型:浮点64
在[5]: s索引
Out [5]: index ([a , b , c , d , e],dtype=object )
in[6]:PD . series(NP . random . randn(5)))))))).
Out[6]:
0 -0.173215
1 0.119209
2 -1.044236
3 -0.861849
4 -2.104569
数据类型:浮点64
注意:Pandas索引值是可重复的,如果使用不支持重复索引的操作,将会抛出异常。
在[7]中:PD.series (NP.random.randn (5),index=[a , b , d , d , e )).
Out[7]:
a 0.624372
b 0.173827
d 0.078082
d 0.765597
e 0.631827
数据类型:浮点64
词典
可以使用字典实例化系列。
In [8]: d={b: 1, a: 0, c: 2}
在[9]中:PD .系列(d))
Out[9]:
b 1
一个0
c 2
dtype: int64
注意:当数据为字典且未设置index参数时,如果Python的版本=3.6,Pandas的版本=0.23,Series将按照字典的插入顺序对索引进行排序。
在其他版本中,Series将根据字典的关键字按字母顺序对列表进行排序。
也就是说,如果我们的Python 3.6或者Pandas 0.23,上面的结果会是
一个0
b 1
c 2
dtype: int64
如果设置了index参数,数据的数据将按照索引的顺序排序显示,不存在的值将被复制为NaN。
In [10]: d={a: 0。 b: 1。 c: 2。}
在[11]: pd。Series(d,index=[b , c , d , a])
Out[11]:
b 1.0
c 2.0
d男
一个0.0
数据类型:float64
注:NaN(非数字)在熊猫中用于表示缺失值。
标量值
如果数据是标量值,则必须设置索引值。Series按索引的长度重复标量值。
在[12]: pd。系列(5。index=[a , b , c , d , e])
Out[12]:
一个5.0
b 5.0
c 5.0
d 5.0
e 5.0
数据类型:float64
类numpy数列
Series的行为类似ndarray,支持大多数NumPy函数和索引切片。
在[13]: s[0]
输出[13]:-1 . 53860 . 48888888861
在[14]: s[:3]
Out[14]:
a -1.974463
b 1.926031
c 0.659861
数据类型:float64
In [15]: s[s s.median()]
Out[15]:
b 1.926031
e 1.077661
数据类型:float64
在[16]: s[[4,3,1]]
Out[16]:
e 1.077661
d -1.386355
b 1.926031
数据类型:float64
In [17]: np.exp(s)
Out[17]:
一个0.138836
b 6.862223
c 1.934524
d 0.249985
e 2.937800
数据类型:float64
注意:我们可以用s[[4,3,1]]提取指定位置的值,也可以是重复值,会重复提取。
s[[4,3,1,1]]
e 1.077661
d -1.386355
b 1.926031
b 1.926031
数据类型:float64
我们可以使用dtype属性来获取数据的类型。
在[18]中:s.dtype
Out[18]: dtype(float64 )
使用astype()设置数据的类型。
在[19]中:s.astype(str)
Out[19]:
a-1。56860 . 88888888861
b 1 . 58661 . 38686868661
c 0 . 56860 . 58686868661
d -1级的。58660.88868888666
e 1 . 58661 . 58686868661
dtype:对象
我们可以将序列转换成数组或numpy数组。
在[20]: s数组中
Out[20]:
[-1.9744628992708957, 1.9260314025924432, 0.6598612596804069,
-1.3863546449807986, 1.0776610911873974]
长度:5,型号:float64
In [21]: s.to_numpy()
Out[21]:数组([-1.9744629,1.9260314,0.65986126,-1.38635464,1.07766109])
系列也类似于字典。
与系列字典类似,您可以使用“索引”选项卡提取值或设置相应的值。
在[22]: s[b]
[22]出来:1 . 54866 . 88888888861
在[23]中:s[e]=12。
在[24]: s
Out[24]:
a -1.974463
b 1.926031
c 0.600000
d -1.386355
e 12.000000
数据类型:float64
在[25]中:s中的e
Out[25]:真
在[26]中:s中的“f”
Out[26]:假
如果您想要访问的标签不存在,将会引发一个错误。
在[27]: s[f]
-
NameError Traceback(最近一次调用)
在
- 1秒[法]
名称错误:未定义名称“f”
还可以使用get方法提取与系列中的标签相对应的值,并在标签不存在时返回None或指定另一个值。
In [28]: s.get(f )
In [29]: s.get(f ,np.nan)
[29]:楠出来了
系列支持矢量运算。
Series支持大多数数组操作。
在[30]:年代年代
Out[30]:
a -3.948926
b 3.852063
1.200000
d-2772709
e 24.000000
数据类型:float64
在[31]: s * 2
Out[31]:
a -3.948926
b 3.852063
1.200000
d-2772709
e 24.000000
数据类型:float64
系列之间的运算会自动对齐标签数据,因此不必考虑执行计算运算的系列是否具有相同的标签。
In [32]: s[1:] s[:-1]
Out[32]:
阿南
b 3.852063
1.200000
d-2772709
e男
数据类型:float64
无法映射的标签的运算结果将被标记为NaN,计算结果将是所有涉及标签的并集。
这样我们就不需要编写代码来显式对齐数据,为数据分析和研究提供了极大的自由度和灵活性。
注意:默认情况下,不同索引对象的结果允许生成索引并集,以避免信息丢失。当然,我们也可以使用drop方法删除包含缺失值的标签。
名称属性
支持Seriesname属性:
在[33]中:s=pd。系列(np.random.randn(5),name=something )
在[34]: s
Out[34]:
0 1.926419
1 1.175251
2 -0.568534
3 -0.014069
4 1.401082
名称:某物,数据类型:float64
在[35]: s.name
Out[35]:“某物”
通常,Series会自动分配name属性,尤其是从DataFrame中提取一维数据切片时。
可以使用rename方法重命名系列。
在[36]中:s2=s.rename(“不同”)
在[37]: s2.name
Out[37]:“不同”
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。