按照现在流行的话来说,加了个学习社群,会有人抛出各式各样的问题,可以用shell解决,也可以用python。

一、微博数据分析

某社交网络数据,完成以下任务:

下载微博1天数据,地址:http://101.236.63.184:12345/weibo/

* weibo.top10wan,测试文件,包含10万条数据记录

* weibo.all,生产文件,千万量级数据记录

* 实验代码在测试文件上跑,最终在生产文件上跑出结果

任务一:算出微博1天数据总量;微博发文user_id总量(uniq的user_id的数量);微博文章总量(uniq的weibo_id的总量)

* 思路:读取文件,遍历每一行,统计行数;

* 获取user_id和weibo_id作为key存入dict,遇到相同key,value++

任务二:计算发微博(weibo_id)最多的Top 100用户

* 将user_id按照dict的value排序,输出dict即可

根据获得到的文件,稍微观察下格式,weibo数据字段和含义,在文件中字段依次排列,用\t隔开。

| 字段 | 列说明 | data |

|:------------------|:--------------------------------|:------|

|id |自增字段,全局唯一 |19341526007

|crawler_time |抓取时间 |2018-05-17 00:00:00

|crawler_time_stamp |抓取时间戳 |1526486400000

|is_retweet |是否转发:1表示是转发、0表示原创 |1

|user_id |本条微博的发文ID |1874517592

|nick_name |本条微博的发文用户屏幕名 |Wuli小婷婷儿

|tou_xiang |本条微博的发文用户的头像URL |https://tvax1.sinaimg.cn/crop.0.0.996.996.50/6fbade58ly8fn4pgftkr8j20ro0rp0uw.jpg

|user_type |本条微博的发文用户的类型:黄V、蓝V、会员用户、达人、普通用户|普通用户

|weibo_id |本条微博的ID |4240286638900436

|weibo_content |本条微博的内容 |转发微博

|zhuan |本条微博的转发数 |0

|ping |本条微博的评论数 |0

|zhan |本条微博的被赞数 |0

|url |本条微博的URL |GgU2rBlpq

|device |本条微博的发文设备 |够快才畅快vivo X6

|locate |本条微博的签到地点 |

|time |本条微博的发文时间 |2018-05-16 12:56:18

|time_stamp |本条微博的发文时间戳 |1526446578

|r_user_id |被转发用户ID |1742566624

|r_nick_name |被转发用户屏幕名 |思想聚焦

|r_user_type |被转发用户类型:黄V、蓝V、会员用户、达人、普通用户|金V

|r_weibo_id |被转发微博ID |4240212839930967

|r_weibo_content |被转发微博内容 |暖心漫画:我欣赏女人这样活着。[心]

|r_zhuan |被转发微博转发数 |2737

|r_ping |被转发微博评论数 |451

|r_zhan |被转发点赞数 |6992

|r_url |被转发微博URL |GgS7pFFuT

|r_device |被转发微博的设备 |微博 weibo.com

|r_location |被转发微博的签到 |

|r_time |被转发微博的日期 |2018-05-16 08:03:03

|r_time_stamp |被转发微博的时间戳 |1526428983

|pic_content |微博配图,如果是转发型微博,则pic_content是原微博的配图|

二、Python代码实现

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

weibo_file = open('weibo.top10wan')

line_count = 0

user_dict = dict()

weibo_dict = dict()

for line in weibo_file:

line_count += 1

# 对于后面部分存在切分错误

weibo_item_list = line.split()

user_id = weibo_item_list[5]

weibo_id = weibo_item_list[9]

if user_dict.get(user_id) is None:

user_dict.setdefault(user_id, 1)

else:

user_dict[user_id] = int(user_dict[user_id]) + 1

if weibo_dict.get(weibo_id) is None:

weibo_dict.setdefault(weibo_id, 1)

else:

weibo_dict[weibo_id] = int(weibo_dict[weibo_id]) + 1

sort_user_list = sorted(user_dict.items(), key=lambda s: s[1], reverse = True)

print("文件总行数:%s" % (line_count))

print("微博发文用户总量:%s" % (len(user_dict)))

print("微博文章总量:%s" % (len(weibo_dict)))

print("发微博最多的Top-10用户")

for k,v in sort_user_list[:10]:

print("user_id:%scount:%s" % (k, v))

结果显示。

文件总行数:100000

微博发文用户总量:47661

微博文章总量:96688

发微博最多的Top-10用户

user_id:1036713140 count:42

user_id:5206650942 count:40

user_id:1750349294 count:38

user_id:6529707947 count:38

user_id:2112339023 count:36

user_id:1986954045 count:26

user_id:1668926483 count:25

user_id:1664176597 count:24

user_id:1267454277 count:23

user_id:5044511176 count:23

三、shell方式解决

# 微博数据总量

cat weibo.top10wan | wc -l

wc -l weibo.top10wan

# 微博发文user_id总量

cat weibo.top10wan | awk -F"\t" '{ print $5 }' | sort | uniq | wc -l

# 微博文章总量

cat weibo.top10wan | awk -F"\t" '{ print $9 }' | sort | uniq | wc -l

四、待解决问题

千万级别场景。

python微博_「Python」 - 微博数据分析相关推荐

  1. python 教学_「Python基础」一次就装好Python手把手装到好

    一.前言: 安装Python有两个主要的方法,视情况而定我两个都会用: (1)安装 Anaconda Anaconda像一个懒人包,安装它等于把Python安装好连同把Python大部分的套件也下载好 ...

  2. 输入这是我的第一个python程序_「vs2017」vs2017 开始自己的第一个Python程序 - seo实验室...

    vs2017 这是针对于博客vs2017安装和使用教程(详细)的Python项目新建示例 目录 一.安装Python环境 二.启动程序 三.编写小程序 四.运行结果 五.交互式界面演示 一.安装Pyt ...

  3. python海伦公式_「海伦公式」海伦公式: - seo实验室

    海伦公式 l为半周长,s为面积 float l = (a + b + c) / 2; float s = sqrt(l*(l - a)*(l - b)*(l - c)); 文章最后发布于: 2018- ...

  4. python axes()_「axes」add_axes()——python绘图 - seo实验室

    axes add_axes新增子区域 add_axes为新增子区域,该区域可以座落在figure内任意位置,且该区域可任意设置大小 可以用来做一些子图,图中图 考虑如下代码: import numpy ...

  5. vlad用python实现_「vlad」VLAD算法简介 - seo实验室

    vlad 1.1  vlad基础概念 VLAD是vector of locally aggregated descriptors的简称,是由Jegou et al.在2010年提出,其核心思想是agg ...

  6. python编程a的x次方_「Python 面试」第四次更新

    阅读本文大约需要 5 分钟. 15.说一说 GIL 前面有提到由于 Python 基于 C 语言编写的解释器中设置了一个 GIL 全局变量锁,该锁使得 Python 的多线程在处理 CPU 计算密集型 ...

  7. 第一章 第一节:Python基础_认识Python

    Python基础入门(全套保姆级教程) 第一章 第一节:Python基础_认识Python 1. 什么是编程 通俗易懂,编程就是用代码编写程序,编写程序有很多种办法,像c语言,javaPython语言 ...

  8. python决策树可视化_「决策树」| Part3—Python实现之可视化

    文章首发于微信公众号:AlgorithmDeveloper,专注机器学习与Python,编程与算法,还有生活. 1.前言 「决策树」| Part2-Python实现之构建决策树中我们已经可以基于给定数 ...

  9. python数学函数_「分享」关于Python整理的常用数学函数整理

    原标题:「分享」关于Python整理的常用数学函数整理 1.函数说明 abs(number)返回数字的绝对值,如abs(-10)返回10 pow(x,y[,z]) 返回x的y次幂(所得结果对z取模), ...

  10. python断点调试_「Python调试器」,快速定位各种疑难杂症!!!

    在很多的编辑器其实都带着「调试程序」的功能,比如写 c/c++ 的 codeblocks,写 Python 的 pycharm,这种图形界面的使用和显示都相当友好,简单方便易学,这个不是我这篇文章要讲 ...

最新文章

  1. 寻找隐形冠军 支付宝、微信用得那么溜,可谁知道背后有一名“上海功臣
  2. html横向排列flex,flex布局示例
  3. TP、Yii、Laravel的区别
  4. es6 日期字符串转日期_【R语言新书】1.4 数据结构Ⅲ:字符串、日期时间
  5. java 短语_从Java中的文本文件中提取短语
  6. Game as a Service —— 开源云游戏搭载WebRTC
  7. java 蓝桥杯算法训练 连续正整数的和(题解)
  8. [C++] - lambda capture的成员函数 异步调用
  9. 也写Jquery插件,拖动布局
  10. 安装kinnect v1驱动
  11. 根据系统创建文件路径
  12. 模糊滤镜_如何用 PS,为照片增加模糊与动感效果
  13. xp计算机保护系统,XP系统总是弹出“Windows文件保护”窗口提示的解决方法
  14. GBase 8a MPP Cluster管理工具---“GBaseDataStudio”
  15. 算法题04:分治法:求第K小元素(线性时间选择算法)
  16. 欧拉是如何计算圆周率的
  17. 天翼云、移动云ubuntu服务器分区和磁盘挂载步骤
  18. 圣墟 第一百三十章 神转折
  19. 网站建设的基本流程及服务端开发简介
  20. sync.WaitGroup的用法

热门文章

  1. 安卓平板python编程软件下载_notepad++下载-notepad++中文版下载v7.6.2 中文增强版-西西软件下载...
  2. c语言头文件下载大全,求C语言头文件下载?
  3. Verilog 实现四选一选择器
  4. 简指南越狱的iOS及原因,负责其
  5. 树莓派:树莓派的各个引脚
  6. uni-app 编译后微信h5打开APP,并且打开相应的页面
  7. 2021 年高教社杯全国大学生数学建模竞赛题目
  8. HDB3码和AMI码通过Matlab实现编码和解码
  9. 项目管理系统与项目管理信息系统与配置管理系统与变更控制系统的区别
  10. Matlab资料汇总暨MATLAB中文论坛帖子整理(二)