前两篇博文写了Dataframe的基本概念,创建方法和索引,今天最后写一下Dataframe的基本技巧,包括数据查看、转置、添加、修改、删除值、对齐、排序等
(1)数据查看、转置
df = pd.DataFrame(np.random.rand(16).reshape(8,2)*100,
columns = ['a','b'])#创建Dataframe
print(df)
print(df.head(2))#查看前两条数据
print(df.tail())#查看后五条数据
输出结果:
.head()和.tail()函数都是默认查看5条数据,再来看一下转置
print(df.T)
输出结果:
转置的方法很简单,前面的博客也写过哦
(2)添加与修改
df = pd.DataFrame(np.random.rand(16).reshape(4,4)*100,
columns = ['a','b','c','d'])#创建Dataframe
print(df)
输出结果:
下面我们再新增一列,同时再新增一行
df['e'] = 10#新增‘e’列,数值全为10
df.loc[4] = 20#新增一行,数值全为20
print(df)
输出结果:
下面再来修改一下其中的部分数值
df['e'] = 20
df[['a','c']] = 100
print(df)
修改的时候我们之间索引到对应的行或列进行修改即可
(3)删除
删除有两种方法,del 和drop()删除某些值
df = pd.DataFrame(np.random.rand(16).reshape(4,4)*100,
columns = ['a','b','c','d'])#创建Dataframe
print(df)
输出结果:
通过del 删除列
del df['a']
print(df)
输出结果:
通过drop()语句删除行
print(df.drop(0))
print(df.drop([1,2]))
print(df)
输出结果:
通过drop()删除列,这里需要加上axis=1
print(df.drop(['d'], axis = 1))
print(df)
输出结果:
观察以上输出结果我们可以看到,drop()函数会生成新的Dataframe,原Dataframe并不改变,而del 则不会生成新的Dataframe,会在原来的Dataframe基础上改变
(4)对齐
df1 = pd.DataFrame(np.random.randn(10, 4), columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.random.randn(7, 3), columns=['A', 'B', 'C'])
print(df1 + df2)
输出结果:
DataFrame对象之前的数据自动按照列和索引来对齐
(5)排序1–按值排序
可以按照Dataframe的数值进行排序,使用 .sort_values,这种方法同样适用于Series
首先来看单列排序
df1 = pd.DataFrame(np.random.rand(16).reshape(4,4)*100,
columns = ['a','b','c','d'])#创建Dataframe
print(df1)
print(df1.sort_values(['a'], ascending = True)) # 升序
print(df1.sort_values(['a'], ascending = False)) # 降序
输出结果:
再来看多列排序:
df2 = pd.DataFrame({'a':[1,1,1,1,2,2,2,2],
'b':list(range(8)),
'c':list(range(8,0,-1))})
print(df2)
print(df2.sort_values(['a','c']))
输出结果:
多列排序的时候会按列的顺序进行排序
(6)排序2–索引排序
除了按数值进行排序,也可以安装索引进行排序 .sort_index
df1 = pd.DataFrame(np.random.rand(16).reshape(4,4)*100,
index = [5,4,3,2],
columns = ['a','b','c','d'])
df2 = pd.DataFrame(np.random.rand(16).reshape(4,4)*100,
index = ['h','s','x','g'],
columns = ['a','b','c','d'])
print(df1)
print(df1.sort_index())
print(df2)
print(df2.sort_index())
输出结果:
今天就到这里啦~
我是一位211高校在读的本科生,是个耿直GIRL,对数据分析比较感兴趣,去年拿到了数学建模国家一等奖,今年参加了美赛还没结果,参加比赛选的题型都是大数据型,用过Excel,Spss,Lingo,MATLAB做数据分析,现在觉得Python比较高效,做数据可视化也非常方便,每天都在坚持学习,对Python数据分析和数据可视化有兴趣的可以关注我哦,每天都会更新的,跟我一起进步呀