matplotlib,numpy,pandas阶段练习

该代码段首先读取'rating.txt'文件,通过pandas进行数据处理,包括按指定列排序、去重,并将处理后的数据保存为'ratingNew.txt'。接着,将数据集随机拆分为训练集(80%)和测试集(20%),分别保存为'train.txt'和'test.txt'。最后,展示了如何从'rating.txt'中选取一个随机用户,统计其各评分等级的数量并绘制柱状图。
摘要由CSDN通过智能技术生成

读取文件rating.txt时将该文件放在程序的同一个文件夹中,才能直接引用文件名读取

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 1
data = pd.read_csv('rating.txt', sep='\t', names=['userld', 'itemld', 'rating', 'timestamp'])


def sort_data(index, data=[]):
    # 数据转换成矩阵
    data1 = pd.DataFrame(data[index])
    # 删除重复项
    data1.drop_duplicates(inplace=True)
    # 删除后排序,并键值对换
    data2 = pd.Series(range(len(data1)), index=data1[index])
    # 将data中的值和data2中的键对应
    for x in range(len(data)):
        data[index][x] = data2[data[index][x]]


sort_data('userld', data)
sort_data('itemld', data)
data.to_csv('ratingNew.txt', sep='\t', header=None, index=False)
# 2
df = pd.read_csv('ratingNew.txt', sep='\t', names=['userld', 'itemld', 'rating', 'timestamp'])
# 提取百分之80的数据
df1 = df.sample(frac=0.8, replace=False)
# 反向索引
df2 = df[~df.index.isin(df1.index)]
df1.to_csv('train.txt', sep='\t', header=None, index=False)
df2.to_csv('test.txt', sep='\t', header=None, index=False)
# 3
dat = pd.read_csv('rating.txt', sep='\t', names=['userld', 'itemld', 'rating', 'timestamp'])
# 随机抽取用户
user = np.random.randint(0, 942)
# 提取随机到用户的所有数据
user_data = dat[dat['userld'] == user]
user_score = []
for x in range(1, 6):
    user_score.append(len(user_data[user_data['rating'] == x]))
score = list(range(1, 6))
# score为x轴,user_score为y轴
picture = plt.bar(score, user_score)
# 柱形图上标明数据
for x, y in zip(score, user_score):
    plt.text(x, y, '%d' % y, ha='center', va='bottom')
plt.show()

运行结果如下

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值