Pandas
Pandas 是基于Numpy开发的一个Python数据分析包,由AQR Capital Management于2008年4月开发,并于2009年底开源出来。 Pandas作为Python数据分析的核心包,提供了大量的数据分析函数,包括数据处理、数据抽取、数据集成、数据计算等基本的数据分析手段。Pandas核心数据结构包括序列和数据框,序列储存一维数据,而数据框则可以存储更复杂的多维数据。这里主要介绍二维数据(类似于数据表)及其相关 *** 作。
在Anaconda发行版中,Pandas包已经集成在系统中,无需另外安装。在使用过程中直接导入该包即可,导入方法为import pandas as pd,其中import和as为关键词,pd为其简称。
一、序列 1、序列的创建以及访问序列对象的创建通过Pandas包中的Series()函数来实现。 示例代码如下:
import pandas as pd #导入Pandas库
import numpy as np #导入Numpy库
s1=pd.Series([1,-2,2.3,'hq']) #指定列表创建默认序列
s2=pd.Series([1,-2,2.3,'hq'],index=['a','b','c','d']) #指定列表和索引,创建个性化序列
s3=pd.Series((1,2,3,4,'hq')) #指定元组创建默认序列
s4=pd.Series(np.array([1,2,4,7.1])) #指定数组创建默认序列
#通过字典创建序列
mydict={'red':2000,'bule':1000,'yellow':500} #定义字典
ss=pd.Series(mydict) #指定字典创建序列
序列的访问通过index索引访问对应的元素值。
print(s1[3])
print(s2['c'])
2、序列的属性
序列有两个属性,分别为值(values)和索引(index)。通过序列中的values属性和index属性可以获取其内容。 示例代码如下:
import pandas as pd
s1=pd.Series([1,-2,2.3,'hq']) #创建序列s1
va1=s1.values #获取序列s1中的值,赋给变量va1
in1=s1.index #获取序列s1中的索引,赋给变量in1
print(va1) #打印变量结果
print(in1) #打印变量结果
3、序列的方法
1. unique() 通过序列中的unique()方法,可以去掉序列中重复的元素值,达到元素值的唯一性。示例代码如下:
import pandas as pd
s5=[1,2,2,3,'hq','hq','he'] #定义列表s5
s5=pd.Series(s5) #将定义的列表s5转换为序列
s51=s5.unique() #调用unique()方法去重
print(s51) #打印结果
2. isin() 通过isin()方法,判断元素值的存在性,如果存在则返回True,否则为False。比如判断元素0和‘he’这两个元素是否存在前面定义的s5序列中。示例代码如下:
s52=s5.isin([0,'he'])
print(s52)
3.value_counts() 通过序列中的value_counts()方法,可以统计获得序列元素值出现的次数。比如统计s5序列中每个元素值出现的次数。 示例代码如下:
s53=s5.value_counts()
4.空值处理方法 序列中处理空值的方法有三个isnull()、notnull()、dropan()。它们的使用方法如下:isnull()判断序列中是否有空值(nan值),如果有空值,返回True,否则False; notnull()判断序列中的非空值(nan值),如果真,返回True,否则False,与isnull方法刚好相反;dropan()清洗序列中的空值(nan值)。可以配合使用空值处理函数,实现对空值(nan值)的清洗。 示例代码如下:
import pandas as pd
import numpy as np
ss1=pd.Series([10,'hq',60,np.nan,20]) #定义序列ss1,其中np.nan为空值(nan值)
tt1=ss1[~ss1.isnull()] #~为取反,采用逻辑数组进行索引获取数据
4、序列的切片
序列元素的访问是通过索引完成的,切片即连续或者间断地批量获取序列中的元素,可以通过给定一组索引来实现切片访问。一般地,给定的一组索引可以用列表或者逻辑数组来表示。示例代码如下:
import numpy as np
s1=pd.Series([1,-2,2.3,'hq'])
s2=pd.Series([1,-2,2.3,'hq'],index=['a','b','c','d'])
s4=pd.Series(np.array([1,2,4,7.1]))
s22=s2[['a','d']] #取索引号为字符a,b的元素
s11=s1[0:2] #索引为连续的数组
s12=s1[[0,2,3]] #索引为不连续的数组
s41=s4[s4>2] #索引为逻辑数组
print(s22)
print('-'*20)
print(s11)
print('-'*20)
print(s12)
print('-'*20)
print(s41)
5、聚合函数
序列的聚合运算,主要包括对序列中的元素求和、平均值、最大值、最小值、
标准差等。 示例代码如下:
import pandas as pd
s=pd.Series([1,2,4,5,6,7,8,9,10])
su=s.sum() #求和
sm=s.mean() #平均值
ss=s.std() #标准差
smx=s.max()
smi=s.min()
二、数据框
Pandas中另一个重要的数据对象为数据框(DataFram),由多个序列按照相同的index组织在一起形成一个二维表。事实上,数据框的每一列为序列。数据框的属性包括index、列名和值。由于数据框是更为广泛的一种数据组织形式,许多外部数据文件读取到Python中大部分会采用数据框的形式进行存取,比如数据库、excel和TXT文本。同时数据框也提供了极为丰富的方法用于处理数据及完成计算任务。数据框是Python完成数据处理及分析的最重要数据结构之一,因此学会灵活运用数据框是利用Python进行数据处理及挖掘的关键环节。
1、数据框的创建利用Pandas库中的DataFrame函数,可以创建数据框。其中字典的键转化为列名,字典的值转化为列值,而索引为默认值,即从0开始从小到大排列。
import pandas as pd
import numpy as np
data={'a':[2,2,np.nan,5,6],'b':[‘kl’,’kl’,’kl’,np.nan,’kl’],’c’:[4,6,5,np.nan,6],’d’:[7,9,np.nan,9,8]}
df=pd.DataFrame(data)
2、数据框的属性
数据框对象具有三个属性,分别为列名、索引和值。比如以上3.3.1定义的数据框df,可以通过以下示例程序获取并打印其属性结果。
print('columns= ')
print(df.columns)
print('-'*50)
print('index= ')
print(df.index)
print('-'*50)
print('values= ')
print(df.values)
3、方法
1)dorpna()方法:通过dorpna()方法,可以去掉数据集中的空值(nan值),需要注意的是原来数据集不发生改变,新数据集需要重新定义。以3.3.1定义的数据框df为例,示例代码如下:
df1=df.dropna()
2)fillna()方法:通过fillna()方法,可以对数据框中的空值(nan值)进行填充。默认情况下所有空值填充同一个元素值(数值或者字符串),也可以指定不同的列填充不同的值。
df2=df.fillna(0) #所有空值元素填充0
df3=df.fillna('Kl') #所有空值元素填充kl
df4=df.fillna({'a':0,'b':'kl','c':0,'d':0}) #全部列填充
df5=df.fillna({'a':0,'b':'kl'}) #部分列填充
3)sort_values()方法:可以利用sort_values()方法,指定列按值进行排序,示例代码如下:
import pandas as pd
data={'a':[5,3,4,1,6],'b':['d','c','a','e','q'],'c':[4,6,5,5,6]}
Df=pd.DataFrame(data)
Df1=Df.sort_values('a',ascending=False) #默认按升序,这里设置为降序
4)sort_index()方法:有时候需要对索引进行排序,这时候可以使用sort_index()方法,以前面定义的Df1为例,示例代码如下:
Df2=Df1.sort_index(ascending=False) #默认按升序,这里设置为降序
5)head()方法:通过head(N)方法,可以取数据集中的前N行,比如取前面定义的数据框Df2中的前4行,示例代码如下:
H4=Df2.head(4);
6)dorp()方法:利用dorp()方法,可以删掉数据集中的指定列。比如删除前面定义的H4中的b列,示例代码如下:
H41=H4.drop('b',axis=1) #需指定轴为1
7)join()方法:利用join()方法,可以实现两个数据框之间的水平连接,示例代码如下:
Df3=pd.DataFrame({'d':[1,2,3,4,5]}) Df4=Df.join(Df3)
8)可以利用as_matrix()方法,将数据框转换为Numpy数组的形式,方便程序使用,特别是数据框中的数据全为数值数据的时候更为有效。示例代码如下:
import pandas as pd
list1=['a','b','c','d','e','f']
list2=[1,2,3,4,5,6]
list3=[1.4,3.5,2,6,7,8]
list4=[4,5,6,7,8,9]
list5=['t',5,6,7,'k',9.6]
D={'M1':list1,'M2':list2,'M3':list3,'M4':list4,'M5':list5} #定义字典D,值为字符、数值混合数据
G={'M1':list2,'M2':list3,'M3':list4} #定义字典G,值为纯数值数据
D=pd.DataFrame(D) #将字典D转化为数据框
D1=D.as_matrix() #将数据框D转化为Numpy数组D1
G=pd.DataFrame(G) #将字典G转化为数据框
G1=G.as_matrix() #将数据框G转化为Numpy数组G1
10)to_excel() :Excel作为常用的数据处理软件,在日常工作中经常用到,通过to_excel()方法,可以将数据框导出到Excel文件中,比如将前面定义的D和G两个数据框导出到Excel文件中。示例代码如下:
to_excel('D.xlsx')
11)统计方法:可以对数据框中各列求和、求平均值或者进行描述性统计,以前面定义的Df4为例,示例代码如下:
Dt=Df4.drop('b',axis=1) #Df4中删除b列
R1=Dt.sum() #各列求和
R2=Dt.mean() #各列求平均值
R3=Dt.describe() #各列做描述性统计
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)