python – 将Pandas的“findall”结果列表拆分为多个项目,按uniques分组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 将Pandas的“findall”结果列表拆分为多个项目,按uniques分组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2294字,纯文字阅读大概需要4分钟。
内容图文
我已经下载了我的Twitter档案,我正在尝试对我最常谈话的人做一些分析.
推文CSV列如下所示:
tweet_id,in_reply_to_status_id,in_reply_to_user_id,retweeted_status_id,retweeted_status_user_id,timestamp,source
我使用read_csv()将tweets.csv文件导入名为“indata”的数据框中.
然后,为了获得推文中提到的所有@handles的列表,我使用了以下内容:
handles = indata['text'].str.findall('@[a-zA-Z0-9_-]*')
结果:
timestamp
...
2013-04-12 11:24:27 [@danbarker]
2013-04-12 11:22:32 [@SeekTom]
2013-04-12 10:50:45 [@33Digital, @HotwirePR, @kobygeddes, @]
2013-04-12 08:00:03 [@mccandelish]
2013-04-12 07:59:01 [@Mumbrella]
...
Name: text, dtype: object
我希望能够做的是按个人句柄和日期分组,以显示多年来与我交谈过的人数.
有什么建议?
解决方法:
纯粹的pandas方式可能是应用Series构造函数将它放入一个DataFrame并堆叠成一个Series(所以你可以使用value_counts)…如果你不关心索引/时间戳你可以使用集合(可能更快):
In [11]: df = pd.DataFrame([['@a @b'], ['@a'], ['@c']], columns=['tweets'])
In [12]: df
Out[12]:
tweets
0 @a @b
1 @a
2 @c
In [13]: at_mentions = df['tweets'].str.findall('@[a-zA-Z0-9_]+')
注意:我会使用而不是*因为我认为@本身不应该被包括在内.
In [14]: at_mentions
Out[14]:
0 [@a, @b]
1 [@a]
2 [@c]
Name: tweets, dtype: object
使用collections’ Counter这很容易:
In [21]: from collections import Counter
In [22]: Counter(at_mentions.sum())
Out[22]: Counter({'@a': 2, '@b': 1, '@c': 1})
大熊猫的方式将保留索引(时间)信息.
Apply系列构造函数将DataFrame和stack组合成一个系列:
In [31]: all_mentions = at_mentions.apply(pd.Series)
In [32]: all_mentions
Out[33]:
0 1
0 @a @b
1 @a NaN
2 @c NaN
我们可以在这里整理名称,以便对正在发生的事情进行更具描述性:
In [33]: all_mentions.columns.name = 'at_number'
In [34]: all_mentions.index.name = 'tweet' # this is timestamp in your example
现在,当我们堆叠时,我们会看到级别的名称:
In [35]: all_mentions = all_mentions.stack()
In [36]: all_mentions
Out[36]:
tweet at_number
1 0 @a
1 @b
2 0 @a
3 0 @c
dtype: object
我们可以在这里做很多其他分析,例如value_counts:
In [37]: all_mentions.value_counts()
Out[37]:
@a 2
@c 1
@b 1
dtype: int64
最终结果等同于pd.Series(Counter(at_mentions.sum())).
内容总结
以上是互联网集市为您收集整理的python – 将Pandas的“findall”结果列表拆分为多个项目,按uniques分组全部内容,希望文章能够帮你解决python – 将Pandas的“findall”结果列表拆分为多个项目,按uniques分组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。