新浪微博用户分析
1,得到用户原始数据
cat sina_user.data | grep -E '^[0-9]{10}' | awk -F'\t' '{print $1"\t"$2"\$5"\t"$9"\t"$15"\t"$16"\t"$17"\t"$18"\t"$19"\t"$28}‘' | sort >/home/minelab/liweibo/springNightUser/sina_user.data
得到的字段分别是
用户id 用户昵称 用户性别 用户地域 用户生日 用户星座 用户关注数 用户粉丝数 用户发布的微博数目 用户标签
数据集中微博用户的总数是2916280个微博用户
数据集中微博总数目是 12804615
2,提取出每个每个节目对应的用户(利用<节目名称>.data)
cat 百花争妍.data | awk -F'\t' '{print $2}' | sort | uniq -c | sort -r -n | sed 's/^ *//g' | sed 's/ /\t/g' | awk -F'\t' '{print $2"\t"$1}'
得到的字段分布是:用户id 用户提到该节目的次数
在百花争妍目录下userid_times.map
之后将该节目中微博用户的id和用户的特征对应起来
join -t $'\t' userid_time.map ../../springNightUser/sina_user.data
字段为
用户id 用户提高该节目的次数 用户昵称 用户性别 用户地域分布 用户生日用户关注数 用户粉丝数 用户发布的微博数目 用户标签
userid_times_profile.map
3)计算一个节目下用户性别分布
cat userid_times_profile.map | awk -F'\t' '{print $4}' | sort |uniq -c | sed 's/^ *//g' | awk '{print $2"\t"$1/1770}'
cat userid_times_profile.map | awk -F'\t' '{print $4}' | sort |uniq -c | sed 's/^ *//g' | awk '{print $2"\t"$1/1770}'
4)计算一个节目下用户地域的相关度
cat userid_times_profile.map | awk -F'\t' '{print $5}' | sort | sed 's/ .*//g' | uniq -c | sort -r -n | sed 's/^ *//g' | awk '{print $2"\t"$1/1770}'
这里的1770是所有的观看该节目的所有用户数目
其他 0.151977 广东 0.099435 四川 0.0830508 北京 0.0757062 上海 0.0519774 浙江 0.0514124 null 0.0502825 江苏 0.040678 福建 0.0316384 重庆 0.0276836 辽宁 0.0276836 河南 0.0276836 山东 0.0248588 湖北 0.0225989 陕西 0.020904 湖南 0.019774 安徽 0.019774 海外 0.019209 天津 0.0186441 广西 0.0169492 河北 0.0129944 山西 0.0124294 吉林 0.0118644 香港 0.0107345 黑龙江 0.0107345 内蒙古 0.00903955 江西 0.00903955 云南 0.00677966 台湾 0.00677966 甘肃 0.00564972 新疆 0.00451977 海南 0.00451977 贵州 0.0039548 宁夏 0.00338983
5)百花争妍星座的相关度
cat userid_times_profile.map | awk -F'\t' '{print $7}' | sort | uniq -c | sed 's/^ *//g' | awk '{print $2"\t"$1/1770}'
白羊座 0.0333333 处女座 0.0305085 金牛座 0.040113 巨蟹座 0.0361582 摩羯座 0.0384181 射手座 0.0361582 狮子座 0.0355932 双鱼座 0.0389831 双子座 0.0367232 水瓶座 0.0344633 天秤座 0.039548 天蝎座 0.0440678
6)百花争妍年龄的相关度
2098 cat userid_times_profile.map | awk -F'\t' '$6~198{print $6}' | wc -l 2099 cat userid_times_profile.map | awk -F'\t' '$6~197{print $6}' | wc -l 2100 cat userid_times_profile.map | awk -F'\t' '$6~196{print $6}' | wc -l 2101 cat userid_times_profile.map | awk -F'\t' '$6~195{print $6}' | wc -l 2102 cat userid_times_profile.map | awk -F'\t' '$6~194{print $6}' | wc -l 2103 cat userid_times_profile.map | awk -F'\t' '$6~193{print $6}' | wc -l 2104 cat userid_times_profile.map | awk -F'\t' '$6~199{print $6}' | wc -l 2105 cat userid_times_profile.map | awk -F'\t' '$6~200{print $6}' | wc -l