• 大小: 2.5MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-11-20
  • 语言: Python
  • 标签: Hadoop  MySQL  python  

资源简介

大数据课程课设设计,基于win10,Hadoop2.8.3,python3.6以及MySQL8.0.

资源截图

代码片段和文件信息

#python connectHDFS.py ratings.csv > result.csv 命令行执行此命令

import numpy as np
import matplotlib.pyplot as plt 
from hdfs import *
import os
import math
import pandas as pd
import pymysql
from mrjob.job import MRJob
from mrjob.step import MRStep
from matplotlib.pyplot import MultipleLocator

db = pymysql.connect(host=‘127.0.0.1‘ port=3306 user=‘root‘ passwd=‘123456‘ db=‘test‘ charset=‘utf8‘)
cursor = db.cursor() #新建数据库访问游标

user_movie = ‘u.data‘
movie_information = ‘u.item‘
user_information = ‘u.user‘

plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘] # 指定默认字体
plt.rcParams[‘axes.unicode_minus‘] = False # 解决保存图像是负号‘-‘显示为方块的问题


def mr_PreTreatment(): #数据预处理,生成result1.csv文件
    user_items=[]
    items=[]
    for line in open(‘u.data‘):
            user_items.append(line.split(‘\t‘))
 
    for line in open(‘u.item‘ encoding= ‘ISO-8859-1‘):
            items.append(line.split(‘|‘))

    items_hash={}
    for i in items:
        items_hash[i[0]]=i[1]
 
    for ui in user_items:
        ui[1]=items_hash[ui[1]]

    f = open(‘ratings.csv‘‘w‘encoding=‘utf-8‘)
    for ui in user_items:
        f.write(ui[0]+‘|‘+ui[1]+‘|‘+ui[2]+‘\n‘)
    f.close()


def score_analysis(): #电影评分分析
    scores = {“1“:0“2“:0“3“:0“4“:0“5“:0}
    for line in open(user_movie):
        user item score = line.split(‘\t‘)[0:3]
        scores[score] += 1

    x1 = scores.keys() #用字典的键也就是分数作为x轴
    y1 = scores.values() #用字典键对应的值也就是打分人数作为y轴
    # print(scores)

    plt.figure(figsize=(19 10))
    plt.subplot(232)
    plt.bar(x1y1color = ‘slateblue‘width = 0.95)
    plt.title(“电影评分统计图“fontsize=14)
    plt.xlabel(“影片评分 (0-5)“fontsize=14)
    plt.ylabel(“评分人数“fontsize = 14)


def movie_year_analysis(): #电影年份分析
    yearCounts = {} #用来统计电影年份与数量的对应关系
    for year in range(19221999):  #按照数据集中电影的年份信息 生成年份字典
        yearCounts[str(year)] = 0


    for line in open(movie_informationencoding=‘ISO-8859-1‘):
        release_date = line.split(‘|‘)[2]
        release_year = release_date[-4:]
        if release_year == ““: continue
        yearCounts[release_year] += 1

    x2 = list(yearCounts.keys()) #获取x轴坐标并转为列表
    y2 = list(yearCounts.values())#获取y轴坐标并转为列表

    plt.subplot(235)

    plt.plot(x2y2label = ‘电影数量‘color = ‘cornflowerblue‘)
    plt.legend(loc=“upper right“) #设置标签图在右上角
    x_major_locator=MultipleLocator(5) #设置x轴间隔为5
    ax=plt.gca()
    ax.xaxis.set_major_locator(x_major_locator)

    plt.xticks(rotation = -60) #将x轴坐标旋转60度
    x_new = range(19221998)
    plt.title(“电影年份统计图“fontsize=14)
    plt.xlabel(“年份“fontsize=14)
    plt.ylabel(“电影数量“fontsize = 14)
    # plt.show()

def occuptin_analysis():   


    occuption_count = {}
    for line in open(user_information): 
        occuption = line.split(‘|‘)[3]
        occuption_count[occuption] = occuption_count.get(occuption0) + 1 #统计职业及其对应人数

    sort_occuption_counts = sorted(occuption_count.items()key=lambda k: 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-07-05 12:35  .vscode\
     文件          57  2020-07-05 12:35  .vscode\settings.json
     文件       13257  2020-07-17 10:52  connectHDFS.py
     文件        1184  2020-07-16 10:22  mr1.py
     文件        2824  2020-07-16 15:44  mr2.py
     文件         712  2020-07-16 09:48  preprocess.py
     文件     3066030  2020-07-17 08:12  ratings.csv
     文件     6798328  2020-07-17 08:12  result.csv
     文件         818  2020-07-13 01:33  temp.py
     文件         497  2020-07-09 20:59  test.py
     文件        7644  2020-07-12 22:14  test2.py
     文件        2654  2020-07-12 10:09  test3.py
     文件         770  2020-07-12 10:12  test4.py
     文件        2295  2020-07-12 11:52  test5.py
     文件        1146  2020-07-12 22:18  test6.py
     文件     1979173  2020-07-10 21:55  u.data
     文件      236344  2020-07-10 21:55  u.item
     文件       22628  2000-07-20 05:09  u.user

评论

共有 条评论