天天看点

pandas的操作汇总

pandas操作总结

    • 1、读取数据
        • 1.1 pd.read_csv()
        • 1.2 pd.read_excel()
    • 2、创建Dataframe的方式
        • 2.1 用字典创建
        • 2.2 利用np.arange()与np.random. ()模块生成DataFrame
    • 3、删除行、列的几种方式
        • 3.1 df.drop()
        • 3.2 df.dropna()

1、读取数据

1.1 pd.read_csv()

主要参数

pd.read_csv(filepath,header=None)

filepath

:文件地址,相对地址或者绝对地址

header

:默认为None,即认为文件不包含列名,并以数字开始设置列名

pandas的操作汇总

1.2 pd.read_excel()

pd.read_csv(filepath,sheet_name = 0,header=None)

主要参数:

filepath

:文件地址

sheet_name

:接受的参数可以是str,int,list或None,默认0(第一个位置的表),可以是表名和位置组成的混合列表。

其中,字符串用于工作表名称。 整数用于零索引工作表位置。 字符串/整数列表用于请求多个工作表。None为获取所有工作表

有时候一个excel工作簿中包含有很多个sheet工作表,如果不指定默认为0,数据读入的时候默认读入的是第一个位置的sheet。

pandas的操作汇总

2、创建Dataframe的方式

2.1 用字典创建

方法一::直接使用

pd.DataFrame(data=dict1)

即可,括号中的 “data=” 写不写都可以

示例如下:

dict1= { 'id':[1,2,3,4,5,6],'name':['Alice','Bob','Cindy','Eric','Helen','Grace '],
             'grade':[90,89,99,78,97,93] 
            }
data =pd.DataFrame(dict1)
>>>
data
    id	name   grade
0	1	Alice	90	
1	2	Bob	    89	
2	3	Cindy	99	
3	4	Eric	78	
4	5	Helen	97	
5	6	Grace	93	

           

方法二::如果dict的数据量很小,可以直接将dict写到

pd.DataFrame()

的括号中,但由于dict提供的仅是一个标量,还必须得提供一个索引

index

,后面的

Index

必须跟前面的数据组数目一致,否则会报错。

示例如下:

df1=pd.DataFrame({ 'A':['A0','A1','A2','A3'], 'B':['B0','B1','B2','B3'],
                   'C':['C0','C1','C2','C3'], 'D':['D0','D1','D2','D3']},
                 index=[0,1,2,3] )    # 备注: index=[0,1,2,3]可以使用pd.Index(range(4))
>>>
df1
    A	B	C	D
0	A0	B0	C0	D0
1	A1	B1	C1	D1
2	A2	B2	C2	D2
3	A3	B3	C3	D3  

           

方法三::如果仅需要dict中的某几列数据,可以用

column

参数来选择

示例如下:

dict1= { 'id':[1,2,3,4,5,6],'name':['Alice','Bob','Cindy','Eric','Helen','Grace '],
             'grade':[90,89,99,78,97,93] 
            }
data =pd.DataFrame(dict1,column = ['id','name])
>>>
data
    id	name   
0	1	Alice	
1	2	Bob	   	
2	3	Cindy	
3	4	Eric	
4	5	Helen	
5	6	Grace	

           

2.2 利用np.arange()与np.random. ()模块生成DataFrame

  • 用顺序数

    np.arange(12).reshape(3,4)

    需要reshape尺寸
  • 用随机数整数

    np.random.randint(20,size=(2,3))

    ,需要指定size
  • 用随机小数(符合正态分布)

    np.random.randn(5,3)

  • 用随机小数(0-1之间)

    np.random.rand(5,3)

#用顺序数np.arange(12).reshape(3,4)
df1=pd.DataFrame(np.arange(12).reshape(3,4),columns=list('abcd'))
>>>
df1
    a	b	c	d
0	0	1	2	3
1	4	5	6	7
2	8	9	10	11
#用随机数np.random.randint(20,size=(2,3))
df2=pd.DataFrame(np.random.randint(20,size=(2,3)),columns=list('abc))
>>>
    a	b	c
0	3	13	9
1	8	1	13
#用随机数np.random.randn(5,3)
df=pd.DataFrame(np.random.randn(5,3),index=list('abcde'),columns=['one','two','three'])
>>>
       one	       two	      three
a	2.238856	0.581198	0.038252
b	1.677510	-0.662304	1.114203
c	-1.821701	0.693057	0.285409
d	-1.649973	-0.014030	-0.405890
e	1.971861	-1.205210	0.531366

           

3、删除行、列的几种方式

3.1 df.drop()

  • labels :删除的index(行)或column(列)的名字,同时删除多个行(列),用列表给定
  • axis :指删除行(axis=0)还是列(axis=1),默认为0,即删除行
  • index, columns :直接指定要删除的行,列(单个用索引标签,多个用列表给,index = ['a,'b,‘c’]
  • level : 可选参数,针对存在MultiIndex(复合索引)的情况,设置将删除标签的级别,level可以为 int 或 level name(级别名称)
  • inplace :默认为False,该操作不改变原数据,而是返回一个执行删除操作后的新dataframe,若inplace=True,则会直接在原数据上执行删除操作,删除后无法返回。
应用场景 删除方式 示例
删除具体的行

df.drop()

df.drop(index = ['a','b','c']

) 或

df.drop( ['a','b','c'],axis = 1)

删除具体的列

df.drop()

df.drop(columns = ['a','b','c'])

df.drop( ['a','b','c'],axis= 0)

删除包含或大于某数值的行或列 df[df[]]
删除具体的行

3.2 df.dropna()