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,即认为文件不包含列名,并以数字开始设置列名
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。
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
- 用顺序数
需要reshape尺寸np.arange(12).reshape(3,4)
- 用随机数整数
,需要指定sizenp.random.randint(20,size=(2,3))
- 用随机小数(符合正态分布)
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[df[]] | |
删除具体的行 |