创建DataFrame对象
注意:绝对不能超过二维数组来创建一个DataFrame对象
df=pd.DataFrame(np.array([[100,100,100],[90,90,90],[80,80,80]]))
输出结果
0 1 2
0 100 100 100
1 90 90 90
2 80 80 80
DataFrame创建的对象,在行和列方向上都有标签索引
DataFrame行操作
DataFrame列操作
DataFrame混合操作操作
先取行再取列
display(df.loc[‘张三’].loc[‘语文’])
display(df.loc[‘张三’][‘语文’])
dislply(df.loc[‘张三’,‘语文’])
先取列再取行
display(df[‘语文’].loc[‘张三’])
display(df[‘语文’][‘张三’])
注意:不支持display(df[‘语文’,‘张三’])
切片
混合操作,列确定对行进行操作
display(df[‘语文’].loc[‘张三’:‘李四’])
display(df[‘语文’].iloc[0:1])
混合操作,行确定对列进行操作
display(df.loc[‘张三’].loc[‘语文’:‘数学’])
display(df.loc[‘张三’].iloc[0:1])
混合操作,对行和列同时进行切片
display(df.loc[‘张三’:‘李四’,‘语文’:‘数学’])
仅对行进行操作
display(df.loc[‘张三’:‘李四’])得到张三和李四的所有信息
display(df.iloc[0:1])表示的通过标签进行索引,也可以得到前两行的数据
Series和DataFrame之间的运算:
默认情况下Series索引匹配Dataframe的列,然后进行广播,也可以通过修改axis参数指定索引匹配还是列索引匹配 例如:
df=pd.DataFreme(np.array(1,5).reshape(2,2))
得到 0 1
0 1 2
1 3 4
s=Series([10,20])
得到 0 10
1 20
df+s,先把s广播的到 0 1 再和df相加得到 0 1
10 20 11 22
10 20 13 24
修改axis之后,匹配s的列,在广播进行相加 例如:
display(df.add(s,axis=‘index’)) 过程如下:
先在列的方向广播s 0 10 10 再和df相加 得到 11 12
1 20 20 23 24
排序
对行索引进行排序(注意:是标签)
display(df.sort_index())
对列索引进行排序(注意:是标签)
df.sort_index(inplace=True) 表示的对原有数据进行排序,sort_index返回none,inplace=False表示的是对拷贝的数据进行排序
display(df.sort_index(ascending=False)) ascending参数表示的是指定生降序,False降序,True升序
对value进行排序
对列进行排序
df.sort_values(‘外语’,axis=0,inplace=True)axis=0表示的垂直排序,inplace表示的是在原有数据进行排序,默认是升序
对行进行排序
df.sort_values(‘张三’,axis=1) axis=1表示的是对行数据进行排序,把张三的成绩从小到大进行排序
对多列进行排序 例如 将语文和数学进行排序
df.sort_values([‘语文’,‘数学’],axis=0) 因为是对垂直方向进行排序,所以axis=0