当我们使用Python进行数据分析时 。有时可能需要根据DataFrame其他列中的值向pandas DataFrame添加一列 。
尽管这听起来很简单 。但是如果我们尝试使用if-else条件语句来做 。可能会变得有些复杂 。值得庆幸的是 。有一种使用numpy做到这一点的简单 。好方法!
要学习如何使用它 。我们来看一个特定的数据分析问题 。我们拥有4,000多个AAA教育推文的数据集 。附有图像的推文会获得更多的赞和转发吗?让我们做一些分析找出答案!
我们将从导入pandas和numpy开始 。并加载数据集以查看其外观 。
文章插图
我们可以看到我们的数据集包含有关每个推文的一些信息 。包括:
1)date —推文发布的日期
2)time —发推文的时间
3)tweet -该推文的实际文本
4)mentions -推文中提及的任何其他Twitter用户
5)photos —推文中包含的任何图像的URL
6)replies_count -在推文上的回复数量
7)retweets_count -推文的转发数
8)likes_count —在推文上的喜欢次数
我们还可以看到photos数据的格式有些奇怪 。
使用np.where()添加具有正确/错误条件的pandas列
对于我们的分析 。我们只想查看带有图像的推文是否获得更多的交互 。因此我们实际上不需要图像URL 。让我们尝试创建一个名为的新列hasimage 。该列将包含布尔值- True如果该tweet包含图像 。False则不包含图像 。
为此 。我们将使用numpy的内置where()函数 。此函数按顺序接受三个参数:我们要测试的条件 。条件为true时分配给新列的值以及条件为false时分配给新列的值 。看起来像这样:
文章插图
在我们的数据中 。我们可以看到没有图像的推文始终[]在该photos列中具有值 。我们可以使用信息并np.where()创建新列hasimage 。如下所示:
文章插图
在上方 。我们可以看到我们的新列已添加到我们的数据集 。并且已正确标记了tweet 。其中包括图像为True 。其他图像为False 。
现在我们有了hasimage专栏 。让我们快速制作几个新的DataFrame 。一个用于所有图像推文 。一个用于所有无图像推文 。我们将使用布尔过滤器进行此操作:
文章插图
现在 。我们已经创建了那些 。我们可以使用内置的数学函数.mean()来快速比较每个DataFrame中的推文 。
我们将使用print()语句使结果更易于阅读 。我们还需要记住使用str()来将.mean()计算结果转换为字符串 。以便可以在我们的打印语句中使用它:
文章插图
根据这些结果 。似乎包括图像可能会促进AAA教育的更多社群媒体的交互 。有图片的推文的平均赞和转发次数是没有图片的推文的三倍 。
添加条件更复杂的pandas专栏
这种方法效果很好 。但是如果我们想添加一个条件更复杂的新列(超出True和False的条件)怎么办?
例如 。为了更深入地研究这个问题 。我们可能要创建一些交互性“层” 。并评估到达每个层的推文所占的百分比 。为了简单起见 。让我们使用Likes来衡量交互性 。并将tweet分为四个层次:
1)tier_4 -2个或更少的喜欢
2)tier_3 — 3-9个赞
3)tier_2 — 10-15个赞
4)tier_1 — 16个赞
为此 。我们可以使用称为的函数np.select() 。我们给它两个参数:一个条件列表 。以及一个我们想要分配给新列中每一行的值的对应列表 。
这意味着顺序很重要:如果conditions满足列表中的第一个条件 。则列表中的第一个值values将分配给该行的新列 。大数据分析使用numpy在pandas dataframe上添加列https://www.aaa-cg.com.cn/data/2376.html如果满足第二个条件 。则将分配第二个值 。等等 。
让我们看一下它在Python代码中的外观:
文章插图
文章插图
太棒了!我们创建了另一个新列 。该列根据我们的(虽然有些武断)层排名系统对每个tweet进行了分类 。
现在 。我们可以使用它来回答有关我们的数据集的更多问题 。例如:1级和4级推文中有多少百分比具有图像?
文章插图
在这里 。我们可以看到尽管图像似乎有所帮助 。但它们似乎并不是成功所必需的 。
推荐阅读
- 现在办婚礼都需要准备哪些东西?
- 减肥适合吃什么肉
- 最近你在看什么追电视剧/哪部小说,推荐一下好吗?
- 宝宝在什么情况下应该用安抚奶嘴?
- 减肥适合吃什么主食
- 有哪些值得推荐的国产品牌?
- 安抚奶嘴真能安抚宝宝吗?
- 减肥适合吃的水果有哪些
- 得知老婆怀孕时候,老公一般是什么样的心情?