时间:2021-05-22
Pandas类似R语言中的数据框(DataFrame),Pandas基于Numpy,但是对于数据框结构的处理比Numpy要来的容易。
1. Pandas的基本数据结构和使用
Pandas有两个主要的数据结构:Series和DataFrame。Series类似Numpy中的一维数组,DataFrame则是使用较多的多维表格数据结构。
Series的创建
>>>import numpy as np>>>import pandas as pd>>>s=pd.Series([1,2,3,np.nan,44,1]) # np.nan创建一个缺失数值>>>s # 若未指定,Series会自动建立index,此处自动建立索引0-50 1.01 2.02 3.03 NaN4 44.05 1.0dtype: float64DataFrame的创建
>>>dates=pd.date_range('20170101',periods=6)>>>datesDatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04', '2017-01-05', '2017-01-06'], dtype='datetime64[ns]', freq='D')>>>df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d'])>>>df a b c d2017-01-01 -1.993447 1.272175 -1.578337 -1.9725262017-01-02 0.092701 -0.503654 -0.540655 -0.1263862017-01-03 0.191769 -0.578872 -1.693449 0.4578912017-01-04 2.121120 0.521884 -0.419368 -1.9165852017-01-05 1.642063 0.222134 0.108531 -1.8589062017-01-06 0.636639 0.487491 0.617841 -1.597920DataFrame可以跟Numpy一样根据索引取出其中的数据,只是DataFrame索引方式更加多样化。DataFrame不仅可以根据默认的行列编号来索引,还可以根据标签序列来索引。
还可以采用字典的方式创建DataFrame:
对于DataFrame的一些属性也可以采用相应的方法查看
dtype # 查看数据类型index # 查看行序列或者索引columns # 查看各列的标签values # 查看数据框内的数据,也即不含表头索引的数据describe # 查看数据的一些信息,如每一列的极值,均值,中位数之类的,只能对数值型数据统计信息transpose # 转置,也可用T来操作sort_index # 排序,可按行或列index排序输出sort_values # 按数据值来排序一些例子
2. 从DataFrame中筛选取出目的数据
从DataFrame中取出目的数据方法有多种,一般常用的有:
简单选取
>>>import numpy as np>>>import pandas as pd>>>dates=pd.date_range('20170101',periods=6)>>>df=pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=['a','b','c','d'])>>>df a b c d2017-01-01 0 1 2 32017-01-02 4 5 6 72017-01-03 8 9 10 112017-01-04 12 13 14 152017-01-05 16 17 18 192017-01-06 20 21 22 23>>>df['a'] # 根据表签直接选取a列,也可用df.a,结果相同2017-01-01 02017-01-02 42017-01-03 82017-01-04 122017-01-05 162017-01-06 20Freq: D, Name: a, dtype: int64>>>df[0:3] # 选择前3行,也可用行标签 df['2017-01-01':'2017-01-03'],结果相同,但是无法用此法选择多列 a b c d2017-01-01 0 1 2 32017-01-02 4 5 6 72017-01-03 8 9 10 11loc使用显式的行标签来选取数据
DataFrame行的表示方式有两种,一种是通过显式的行标签来索引,另一种是通过默认隐式的行号来索引。loc方法是通过行标签来索引选取目标行,可以配合列标签来选取特定位置的数据。
>>>df.loc['2017-01-01':'2017-01-03'] a b c d2017-01-01 0 1 2 32017-01-02 4 5 6 72017-01-03 8 9 10 11>>>df.loc['2017-01-01',['a','b']] # 选取特定行的a,b列a 0b 1Name: 2017-01-01 00:00:00, dtype: int64iloc使用隐式的行序列号来选取数据
使用iloc可以搭配列序列号来更简单的选取特定位点的数据
>>>df.iloc[3,1]13>>>df.iloc[1:3,2:4] c d2017-01-02 6 72017-01-03 10 11ix利用ix可以混用显式标签与隐式序列号
loc只能使用显式标签来选取数据,而iloc只能使用隐式序列号来选取数据,ix则能将二者结合起来使用。
>>> df.ix[3:5,['a','b']] a b2017-01-04 12 132017-01-05 16 17使用逻辑判断来选取数据
>>>df a b c d2017-01-01 0 1 2 32017-01-02 4 5 6 72017-01-03 8 9 10 112017-01-04 12 13 14 152017-01-05 16 17 18 192017-01-06 20 21 22 23>>>df[df['a']>5] # 等价于df[df.a>5] a b c d2017-01-03 8 9 10 112017-01-04 12 13 14 152017-01-05 16 17 18 192017-01-06 20 21 22 233. Pandas设置特定位置值
4. 处理丢失数据
有时候我们的数据中会有一些空的或者缺失(NaN)数据,使用dropna可以选择性的删除或填补这些NaN数据。drop函数可以选择性的删除行或者列,drop_duplicates去除冗余。fillna则将NaN值用其他值替换。操作后不改变原值,若要保存更改需重新赋值。
还可以利用函数来检查数据中是否有或者全部为NaN
5. 数据的导入以及导出
一般excel文件以csv方式读入,pd.read_csv(file),data保存为filedata.to_csv(file)。
6. 数据添加合并
本节主要学习Pandas的一些简单基本的数据添加合并方法:concat,append。
concat合并方式类似于Numpy的concatenate方法,可横向或者竖向合并。
>>>import numpy as np>>>import pandas as pd>>> df1=pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d'])>>> df2=pd.DataFrame(np.ones((3,4))*1,columns=['a','b','c','d'])>>> df3=pd.DataFrame(np.ones((3,4))*2,columns=['a','b','c','d'])>>>res=pd.concat([df1,df2,df3],axis=0) # axis=0表示按行堆叠合并,axis=1表示按列左右合并>>>res a b c d0 0.0 0.0 0.0 0.01 0.0 0.0 0.0 0.02 0.0 0.0 0.0 0.00 1.0 1.0 1.0 1.01 1.0 1.0 1.0 1.02 1.0 1.0 1.0 1.00 2.0 2.0 2.0 2.01 2.0 2.0 2.0 2.02 2.0 2.0 2.0 2.0>>># 使用ignore_index=True参数可以重置行标签>>>res=pd.concat([df1,df2,df3],axis=0,ignore_index=True)>>>res a b c d0 0.0 0.0 0.0 0.01 0.0 0.0 0.0 0.02 0.0 0.0 0.0 0.03 1.0 1.0 1.0 1.04 1.0 1.0 1.0 1.05 1.0 1.0 1.0 1.06 2.0 2.0 2.0 2.07 2.0 2.0 2.0 2.08 2.0 2.0 2.0 2.0join参数提供了更多样化的合并方式。join=outer为默认值,表示将几个合并的数据都用上,具有相同列标签的合二为一,上下合并,不同列标签的独自成列,原来没有数值的位置以NaN填充;join=inner则只将具有相同列标签的(行)列上下合并,其余的列舍弃。简言之,outer代表并集,inner代表交集**。
join_axes参数可以设定参考系,以设定的参考来合并,参考系中没有的舍弃掉
append只有上下合并,没有左右合并
>>>df1=pd.DataFrame(np.ones((3,4)),index=[1,2,3],columns=['a','b','c','d'])>>> df2=pd.DataFrame(np.ones((3,4))*2,index=[2,3,4],columns=['b','c','d','e'])>>>res5=df1.append(df2,ignore_index=True)>>>res5 a b c d e0 1.0 1.0 1.0 1.0 NaN1 1.0 1.0 1.0 1.0 NaN2 1.0 1.0 1.0 1.0 NaN3 NaN 2.0 2.0 2.0 2.04 NaN 2.0 2.0 2.0 2.05 NaN 2.0 2.0 2.0 2.07. Pandas高级合并:merge
merge合并与concat类似,只是merge可以通过一个或多个键将两个数据集的行连接起来。
参数说明:
依据行index合并与依据列key合并用法类似
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Python多线程的实例详解一)线程基础1、创建线程:thread模块提供了start_new_thread函数,用以创建线程。start_new_thread
本文实例讲述了Python数据分析模块pandas用法。分享给大家供大家参考,具体如下:一介绍pandas(PythonDataAnalysisLibrary)
pandas是一个Python语言的软件包,在我们使用Python语言进行机器学习编程的时候,这是一个非常常用的基础编程库。本文是对它的一个入门教程。panda
这篇文章主要介绍了Python模块future用法原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下计算
最近准备使用Python+Hadoop+Pandas进行一些深度的分析与机器学习相关工作。(当然随着学习过程的进展,现在准备使用Python+Spark+Had