如何在大学旁边租一到两个月的房子?

ngnix部署

  返回  

数据分析利器——python中pandas的使用(2)

2021/8/21 20:55:53 浏览:

DataFrame

引入了行标签和列标签

具有更加强大的现实意义

DataFrame(data=np.random.randint(0,10,size=(3,5)))

输出结果

01234
020184
167753
225455

直接输出了表格

哇哦!

我们在索引的时候还可以定制我们的行索引和列索引

甚至可以直接输出我们的成绩为表格状态

注:index 行索引 columns 列索引

DataFrame(data=np.random.randint(60,100,size=(3,6)),index=['一模','二模','三模'],columns=['语文','数学','英语','物理','化学','生物'])

输出结果

语文数学英语物理化学生物
一模939277996092
二模799579777177
三模916761687668

要不你也试试?

那如何访问DataFrame中的对象呢

df = DataFrame(data=np.random.randint(60,100,size=(3,6)),index=['一模','二模','三模'],columns=['语文','数学','英语','物理','化学','生物'])
df.loc['三模','生物']

我们的索引方法是先写行索引再写列索引

我们还可以通过一些简单的操作访问一个人一二三模的生物成绩,或者一模的所有成绩(列表形势)

例如

df.loc[['三模','二模','一模'],'生物']

运算

  1. 索引对齐
  2. 广播
# 广播运算
df+5
df+df

那么就有一个问题

Series和DataFrame能进行运算嘛

答案当然是可以的

score = df.loc['一模']
score
df+score

输出结果

语文数学英语物理化学生物
一模178180182196136144
二模149174177183131156
三模183184172175152143

可以观察到进行了索引对齐的相加,所有数加上了一模所有学科的成绩

但这种方法是竖着加的那我们想横着加可以嘛

当然可以!

只不过会不对齐就会变成空值(NAN)

注:

axis=0表示纵向级联,axis=1表示横向级联,默认为0

不清楚可以看numpy使用哦!

df.add(score,axis=1)
语文数学英语物理化学生物
一模178180182196136144
二模149174177183131156
三模183184172175152143
df.add(score,axis=0)
语文数学英语物理化学生物
一模NaNNaNNaNNaNNaNNaN
三模NaNNaNNaNNaNNaNNaN
二模NaNNaNNaNNaNNaNNaN
化学NaNNaNNaNNaNNaNNaN
数学NaNNaNNaNNaNNaNNaN
物理NaNNaNNaNNaNNaNNaN
生物NaNNaNNaNNaNNaNNaN
英语NaNNaNNaNNaNNaNNaN
语文NaNNaNNaNNaNNaNNaN

大家看行标签应该就知道发生了什么

所以我们当进行相加的时候要注意索引是否一致

聚合运算

  1. 求和
  2. 求平均值
  3. 求方差

等等…

# 求和
score.sum()
# 平均值
score.mean()
# 方差
score.var()
# 标准差
score.std()
# 最大值
score.max()
# 最小值
score.min()

我们试试让我们的对象进行这些运算

df.sum()
语文    243
数学    268
英语    258
物理    260
化学    215
生物    227
dtype: int64

我们发现默认是列相加

如果我们要改成行方向,只要用老方法改axis=1就行了

df.sum(axis=1)
一模    508
二模    462
三模    501
dtype: int64

这些就可以算出每次考试的总成绩,大大简化运算

还有俩种非常好用的聚合方式

  1. any
  2. all
df.isnull()
语文数学英语物理化学生物
一模FalseFalseFalseFalseFalseFalse
二模FalseFalseFalseFalseFalseFalse
三模FalseFalseFalseFalseFalseFalse

这个函数方法可以判断我们的列表里面有没有空值

但这样全部显示是否有点不太雅观

# 全部为真才是真
(score>10000).all()
# 若至少一个值为真则为真
(score>10000).any()

我们用any,all俩种方法配合判断语句可以实现很多复杂功能

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号