关于Pandas
Pandas中的数据结构
(1)Series:一维数组系列,也称序列;
(2)DataFrame:二维的表格型数据结构;
(3)Panel:三维数组。
数据类型
1.Logical(逻辑型)
2. Numeric(数值型)
3. Character(字符型)
数据结构
1.Series
使用方法如下;
Series([数据1,数据2,...],index=[索引1,索引2,...])
例如:
from pandas import Series X=Series(['a',2,'螃蟹'],index=[1,2,3]) X X[3]#访问index=3的数据
索引号默认从0开始,也可以指定索引名。
''' Series的index若省略,索引号从0开始 ''' from pandas import Series A=Series([1,2,3]) print(A) from pandas import Series A=Series([1,2,3],index=[1,2,3]) print(A) from pandas import Series A=Series([1,2,3],index=['A','B','C']) print(A)
访问系列值时,需要通过索引来访问,系列索引(index)和系列值是一一对应的关系。
from pandas import Series A=Series([14,26,31]) print(A) print(A[1])#print(A[1])的输出 print(A[5])#print(A[5])时会因索引越界而出错 from pandas import Series A=Series([14,26,31],index=['first','second','third']) print(A) print(A['second'])#通过参数来访问系列值
from pandas import Series #混合定义一个序列 x=Series(['a',True,1],index=['first','second','third']) #根据索引访问 x[1] #根据索引号访问 x['second'] #根据索引名访问 #不能越界访问,会报错 x[3] #不能追加单个元素,但可以追加系列 x.append('2') #追加一个系列 n=Series(['2']) x.append(n) #需要使用一个变量承载变化,即x.append(n)返回的是一个新序列 x=x.append(n) #判断值是否存在,数字和逻辑型(True/False)是不需要加引号的 2 in x.values '2' in x.values #切片 x[1:3] #定位获取,这个方法常用于随机抽样 x[[0,2,1]] #根据索引名删除 x.drop(0) #按索引名(数字) x.drop('first') #按索引名(字符) #根据索引号找出对应的索引名 x.index[2] #根据位置(索引)删除,返回新的序列 x.drop(x.index[3]) #根据值删除,显示值不等于2的系列,即删除2,返回新序列 x[x.values!=2] #修改序列的值。将True值改为b,先找到True的索引:x.index[x.values==True] x[x.index[x.values==True]]='b' #注意显示结果,这里把值为1也当作True处理了 #通过值访问系列index x.index[x.values=='a'] #修改series中的index:可以通过赋值改变,也可以通过reindex方法 x.index=[0,1,2,3] #可将字典化为Series s=Series({'a':x.index[x.values=='b'],'b':2,'c':3})
''' sort_index(ascending=True)方法可以对index进行排序操作,默认为升序。 也可以使用reindex方法重新排序。 ''' #reindex重排序 obj=Series([4.5,7.2,-5.3,3.6],index=['d','b','a','c']) obj2=obj.reindex(['a','b','c','d','e']) obj3=obj.reindex(['a','b','c','d','e'],fill_value=0)
2.DataFrame
使用方式如下:
DataFrame(columnsMap)
具体实例代码如下:
from pandas import Series from pandas import DataFrame df=DataFrame({'age':Series([26,29,24]),'name':Series(['Ken','Jerry','Ben'])},index=[0,1,2]) print(df)
注意: 数据框的访问方式
访问位置 方法 备注
访问列 变量名[列名] 访问对应的列。
访问行 变量名[n:m] 访问n行到m-1行的数据。
访问块(行和列) 变量名.iloc[n1:n2,m1:m2] 访问n1行到(n2-1)行,m1到(m-1)列的数据。
访问指定的位置 变量名.at[行名,列名] 访问(行名,列名)位置的数据。
例如:
#获取age的值 A=df['age'] print(A) #获取索引号是第二行的值 B=df[1:2] print(B) #获取第0行到2行(不含)与第0列到2列(不含)的块 C=df.iloc[0:2,0:2] print(C) #获取第0行与name列的交叉值 D=df.at[0,'name'] print(D) ################################ from pandas import DataFrame df1=DataFrame({'age':[21,22,23],'name':['KEN','JOHN','JIMI']}); df2=DataFrame({'age':[21,22,23],'name':['KEN','JOHN','JIMI']},index=['first','second','third']); #访问行 df1[1:100]#显示index=1及其以后的99行数据,不包括index=100 df1[2:2] #显示空 df1[4:1] #显示空 df2['third':'third'] #按索引名访问某一行 df2=['first':'second'] #按索引名访问多行 #访问列 df1['age'] #按列名访问 df1[df1.columns[0:1]] #按索引号访问 #访问快 df1.iloc[0:1,0:1] #按行列索引号访问 #访问位置 df1.at[1,'name'] #1为索引 df2.at['second','name'] #索引名 df2.at[1,'name'] #当有索引名时用索引号就会报错 #修改列名 df1.columns=['age2','name2'] #修改行索引 df1.index=range(1,4) #根据行索引删除 df1.drop(1,axis=0) #axis=0是表示行轴,也可以省略 #根据列索引删除 df1.drop('age2',axis=1) #axis=1是表示列轴,不可省略 #第二种删除列的方法 del df1['age2'] #增加列 df1['newColumn']=[2,4,6] #增加行。这种方法效率比较低 df2.loc[len(df2)]=[24,'Keno'] #增加行的方法 df1=DataFrame([[1,2],[3,4]],columns=list("AB")) df2=DataFrame([[5,6],[7,8]],columns=list("AB")) #方法一,合并只是简单的“叠加”成新的数据框,不修改index df1.append(df2) #仅把df和df2“叠”起来了,没有修改合并后的index #方法二,合并成一个新的数据框,并产生了新的index df1.append(df2,ignore_index=True) #修改index,对df2部分重新索引了
数据导入
1.导入txt文件
命令格式如下:
read_table(file,names=[列名1,列名2,...],sep“ ”,...)
其中:
file为文件路径和路径名;
names为列名。默认为文件中的第一行作为列名;
sep为分隔符,默认为空。
2.导入csv文件
命令格式如下:
read_csv(file,names=[列名1,列名2,...],sep“,”,...)
其中:
file为文件路径和路径名;
names为列名。默认为文件中的第一行作为列名;
sep为分隔符。
3.导入Excel文件
命令格式如下:
read_excel(file,sheetname,header=0)
其中:
file为文件路径和路径名;
sheetname指定sheet;
header,取0表示以文件第一行为表头显示,取1表示把文件第一行丢弃。
数据导出
1.导出csv文件
其命令格式如下:
to_csv(file_path,sep=“,”,index=TRUE,header=TRUE)
其中:
file_path为文件路径;
sep为分隔符,默认是逗号;
index表示是否导出行序号,默认为TRUE,导出行序号;
header表示是否导出列名,默认是TRUE,导出列名。
2.导出Excel文件
其命令格式如下:
to_excel(file_path,index=TRUE,header=TRUE)
其中:
file_path为文件路径;
index表示是否导出行序号,默认为TRUE,导出行序号;
header表示是否导出列名,默认是TRUE,导出列名。
版权声明:本文为CSDN博主「jwxdzxj」的原创文章,遵循 CC 4.0 BY-SA 版权协议,原文链接:https://blog.csdn.net/qq_41770283/article/details/98884747。