6.1 葡萄酒评论分析报告

这篇具有很好参考价值的文章主要介绍了6.1 葡萄酒评论分析报告。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

任务描述

本关任务:编写程序,多维度分析葡萄酒数据。

第1关 葡萄酒评论分析报告——国家列表和平均分

代码如下:

import pandas as pd

# 定义符号常量,用于索引,使之具有清晰的语义
COUNTRY = 1
POINTS = 3


def csv_to_ls(file):
    """接收文件名为参数,用pandas读取文件中的数据,数据部分转为二维列表类型,返回二维列表。"""
    wine_list = pd.read_csv(file).values.tolist()
    return wine_list


def country_ls(wine_list):
    """接收列表格式的葡萄酒数据为参数,略过标题行,返回不重复的国家名列表,按字母表升序排序,
    若国家名数据缺失,略过该条数据,返回值中不包含空字符串元素。
    @参数 wine_list:葡萄酒数据,列表类型
    """
    # 此处补充你的代码
    country_list = []
    for x in wine_list:
        if x[COUNTRY] not in country_list:
            country_list.append(x[COUNTRY])
    country_list.sort()
    return country_list
 

def avg_point(wine_list, country):
    """接收列表格式的葡萄酒数据和国家名列表为参数,计算每个国家的葡萄酒的平均得分,
    返回值为国家名和得分的列表。
    @参数 wine_list:葡萄酒数据,列表类型
    @参数 country:国家名,列表类型
    """
    # 此处补充你的代码
    score=[]
    for i in range(len(country)):
        n=0
        count=0
        for j in wine_list:
            if country[i]==j[1]:
                n+=float(j[-3])
                count+=1
        score.append([country[i],round(n/count,2)])
    ls=sorted(score,key=lambda x:x[0], reverse=False)
    return ls

def judge(txt):
    """接收一个字符串为参数,根据参数值调用不同函数完成任务"""
    filename = 'data/winemag-data.csv'
    wine = csv_to_ls(filename)
    country = country_ls(wine)
    if txt == '国家名列表':
        print(country)
    elif txt == '平均分':
        print(avg_point(wine, country))  # 每个国家的葡萄酒的平均得分
    else:
        print('输入错误')


if __name__ == '__main__':
    text = input()
    judge(text)

第2关 葡萄酒评论分析报告——平均分排序和评分最高

代码如下:

import pandas as pd
import math

# 定义符号常量,用于索引,使之具有清晰的语义
NUMBER = 0
COUNTRY = 1
DESCRIPTION = 2
POINTS = 3
PRICE = 4


def csv_to_ls(file):
    """接收文件名为参数,用pandas读取文件中的数据,数据部分转为二维列表类型,返回二维列表。"""
    wine_list = pd.read_csv(file).values.tolist()
    return wine_list


def country_ls(wine_list):
    """接收列表格式的葡萄酒数据为参数,略过标题行,返回不重复的国家名列表,按字母表升序排序,
    若国家名数据缺失,略过该条数据,返回值中不包含空字符串元素。
    @参数 wine_list:葡萄酒数据,列表类型
    """
    country_list = []
    for x in wine_list:
        if x[COUNTRY] not in country_list:
            country_list.append(x[COUNTRY])
    country_list.sort()
    # print(country_list)
    return country_list


def avg_point_sort(wine_list, country):
    """接收列表格式的葡萄酒数据和国家名列表为参数,计算每个国家的葡萄酒的平均得分,
    返回值为国家名和得分的列表,按评分由高到低降序排列。
    @参数 wine_list:葡萄酒数据,列表类型
    @参数 country:国家名,列表类型
    """
    # 此处补充你的代码
    score=[]
    for i in range(len(country)):
        n=0
        count=0
        for j in wine_list:
            if country[i]==j[1]:
                n+=float(j[-3])
                count+=1
        score.append([country[i],round(n/count,2)])
    ls=sorted(score,key=lambda x:x[1], reverse=True)
    return ls


def top_10_point(wine_list):
    """接收列表格式的葡萄酒数据参数,返回评分最高的十款葡萄酒的编号、出产国、评分和价格,按评
    分降序输出。
    需要注意的是评分可能有缺失值,此时该数据为nan
    if math.isnan(x) == False可用于判定x的值是不是nan
    nan的数据类型是float,不可以直接用字符串判定方法。
    @参数 wine_list:葡萄酒数据,列表类型
    """
    # 此处补充你的代码
    list1=[]
    for i in wine_list:
        if math.isnan(float(i[-3]))==False:
            list1.append(i)
    list2=sorted(list1,key=lambda x:x[-3],reverse=True)
    list3=[]
    count=1
    for k in list2:
        if count<11:
            list3.append([k[-6],k[-5],k[-3],k[-2]])
            count+=1
    return list3


def judge(txt):
    """接收一个字符串为参数,根据参数值调用不同函数完成任务"""
    filename = 'data/winemag-data.csv'
    wine = csv_to_ls(filename)
    country = country_ls(wine)
    if txt == '平均分排序':
        print(avg_point_sort(wine, country))  # 每个国家的葡萄酒的平均得分降序输出
    elif txt == '评分最高':
        print(top_10_point(wine))  # 评分最高的十款葡萄酒的编号、出产国、评分和价格,按评分降序输出
    else:
        print('输入错误')


if __name__ == '__main__':
    text = input()
    judge(text)

第3关 葡萄酒评论分析报告——价格最高和葡萄酒评分

代码如下:

import pandas as pd
import math

# 定义符号常量,用于索引,使之具有清晰的语义
NUMBER = 0
COUNTRY = 1
POINTS = 3
PRICE = 4


def csv_to_ls(file):
    """接收文件名为参数,用pandas读取文件中的数据,数据部分转为二维列表类型,返回二维列表。"""
    wine_list = pd.read_csv(file).values.tolist()
    return wine_list


def top_20_price(wine_list):
    """接收列表格式的葡萄酒数据参数,返回价格最高的二十款葡萄酒的编号、出产国、评分和价格,按价
    格降序输出。
    @参数 wine_list:葡萄酒数据,列表类型
    需要注意的是价格可能有缺失值,此时该数据为nan
    if math.isnan(x) == False可用于判定x的值是不是nan
    nan的数据类型是float,不可以直接用字符串判定方法。
    """
    # 此处补充你的代码
    list1=[]
    for i in wine_list:
        if math.isnan(float(i[-2]))==False:
            list1.append(i)
    list2=sorted(list1,key=lambda x:x[-2],reverse=True)
    list3=[]
    count=1
    for k in list2:
        if count<21:
            list3.append([k[-6],k[-5],k[-3],k[-2]])
            count+=1
    return list3

def amount_of_point(wine_list):
    """接收列表格式的葡萄酒数据参数,返回每个评分的葡萄酒数量,忽略没有评分的数据
    例如[...[84, 645], [85, 959],...]表示得分为84的葡萄酒645种,得分85的葡萄酒有959种。
    @参数 wine_list:葡萄酒数据,列表类型
    """
    # 此处补充你的代码
    score_list = []
    list1 = []
    count = 0
    for x in wine_list:
        if x[-3] not in score_list:
            score_list.append(x[-3])
    score_list.sort()
    for i in score_list:
        count = 0
        for j in wine_list:
            if i == int(j[-3]):
                count += 1
        list1.append([i, count])
    return list1


def most_of_point(amount_of_points):
    """接收每个评分的葡萄酒数量的列表为参数,返回获得该分数数量最多的评分和数量的列表。
    @参数 amount_of_points:每个评分的葡萄酒数量,列表类型
    """
    # 此处补充你的代码
    list1 = sorted(amount_of_points, key=lambda x: x[1], reverse=True)
    return list1[0]


def avg_price_of_most_point(wine_list, most_of_points):
    """接收列表格式的葡萄酒数据和获得最多的评分及数量的列表为参数
    忽略缺失价格的数据,返回这个分数的葡萄酒的平均价格,保留2位小数。
    @参数 wine_list:葡萄酒数据,列表类型
    @参数 most_of_points:获得最多的评分及数量,列表类型
    """
    # 此处补充你的代码
    sum = 0
    m = 0
    for i in wine_list:
        if most_of_points[0] == int(i[-3]):
            if math.isnan(float(i[-2])) == False:
                sum += float(i[-2])
                m += 1
    return round(sum / m, 2)


def judge(txt):
    """接收一个字符串为参数,根据参数值调用不同函数完成任务"""
    filename = 'data/winemag-data.csv'
    wine = csv_to_ls(filename)
    if txt == '价格最高':
        print(top_20_price(wine))  # 价格最高的二十款葡萄酒的编号、出产国、评分和价格,按价格降序输出
    elif txt == '葡萄酒评分':
        amount_point = amount_of_point(wine)
        most_point = most_of_point(amount_point)
        print(amount_point)  # 各个评分的葡萄酒数量
        print(most_point)  # 拥有葡萄酒数量最多的评分和数量
        print(avg_price_of_most_point(wine, most_point))  # 拥有葡萄酒数量最多的评分的葡萄酒的平均价格
    else:
        print('输入错误')


if __name__ == '__main__':
    text = input()
    judge(text)

尝试静下心来做自己该做的的事情,不要让焦虑和烦恼毁掉你本就不多的热情与定力。文章来源地址https://www.toymoban.com/news/detail-740369.html

到了这里,关于6.1 葡萄酒评论分析报告的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数学建模】国赛真题分析 2012 A题 葡萄酒的评价

    优秀论文地址: 链接:https://pan.baidu.com/s/19WGpybgM6RncxTYhx61JRA?pwd=vl22 提取码:vl22 –来自百度网盘超级会员V6的分享 确定葡萄酒质量时一般是通过聘请一批有资质的评酒员进行品评。每个评酒员在对葡萄酒进行品尝后对其分类指标打分,然后求和得到其总分,从而确定葡萄酒的

    2024年02月12日
    浏览(50)
  • 为葡萄酒数据集构造SVM分类器和使用随机森林回归模型预测葡萄酒质量

    目录 前言 一、实验目的 二、实验环境 三、实验内容与结果 1、SVM(support vector Machine)是什么? 2、SVM能干什么? 3、SVM如何实现? 4、独热编码:独热编码(One-Hot Encoding) - 知乎 5、 随机森林算法的基本原理 四、模型构建 1、读入数据 2、数据初始化 3、训练模型,评价分类器

    2023年04月25日
    浏览(41)
  • 基于K近邻的葡萄酒质量检测项目

    💥 项目专栏:【机器学习项目实战案例目录】项目详解 + 完整源码 🌠 『精品学习专栏导航帖』 🐳

    2024年02月03日
    浏览(41)
  • 使用python实现葡萄酒威士忌风味特征分类

    目的和描述: 苏格兰威士忌因其复杂性和多样化的风味而备受推崇。据信,生产它的苏格兰地区具有独特的风味特征。在本案例研究中,我们将根据苏格兰威士忌的风味特征对其进行分类。我们将使用的数据集包含来自几个酿酒厂的精选苏格兰威士忌,我们将尝试将威士忌聚

    2024年02月01日
    浏览(37)
  • 仅记录我的第一次数学建模——葡萄酒的评价

    仅以此来记录我的数学建模课小组作业  2022.11.3周四运动会放假,终于有时间做数学建模啦(月底就要答辩了,今日数学建模小组作业进度2.6666%,  2022.11.23哈哈哈哈哈哈终于写完了,但! tm查重30% 要求20%,累了,改不动了,开摆(真服了,为啥找个负责有能力的队友比世界

    2024年02月12日
    浏览(42)
  • 2012年数学建模国赛A题(葡萄酒质量评价)优秀论文.doc

    本博客下载链接包含修改的word版本, 可免费下载阅览学习, 也可作为数学建模相关课程作业修改上交: 链接:https://pan.baidu.com/s/1JaNsp6aVhl0xLuESsKwv4Q?pwd=qtnc  提取码:qtnc 葡萄酒的评价 摘要      如今葡萄酒逐渐成为人们越来越喜爱的饮品。本文主要针对葡萄酒的评价问题,利用

    2024年02月11日
    浏览(48)
  • 【数据挖掘】基于粒子群算法优化支持向量机PSO-SVM对葡萄酒数据集进行分类

    PSO是粒子群优化算法(Particle Swarm Optimization)的英文缩写,是一种基于种群的随机优化技术,由Eberhart和Kennedy于1995年提出。粒子群算法是模仿昆虫、兽群、鸟群和鱼群等的群集行为,这些群体按照一种合作的方法寻找食物,群体中的每个成员通过学习它自身的经验和其他成员

    2024年02月02日
    浏览(56)
  • 2023爱分析·低代码厂商全景报告|爱分析报告

    关键发现 低代码开始向甲方核心场景渗透,呈现两个显著特征:“更深入”、“更垂直”。更深入,即甲方愈发注重低代码在复杂业务场景的应用开发能力;更垂直,即甲方需要使用低代码开发行业垂直应用,因此对行业或场景组件产生需求。 2023年中国低代码市场规模为

    2024年02月14日
    浏览(40)
  • 2023爱分析 · 元宇宙厂商全景报告 | 爱分析报告

      报告编委 黄勇 爱分析合伙人首席分析师 文鸿伟 爱分析高级分析师   目录 1. 研究范围定义 2. 市场洞察 3. 厂商全景地图 4. 市场分析与厂商评估 5. 入选厂商列表 1.    研究范围定义 研究范围 2021年3月,十四五规划中首次提及元宇宙,指出需要加强元宇宙底层核心技术基础

    2024年02月15日
    浏览(43)
  • 2023爱分析·AIGC厂商全景报告|爱分析报告

    通用大模型市场当前虽入局者众多,但终局将高度集中,未来将由5-6家厂商主导;应用层厂商及甲方企业应着眼终局,从大算力、巨量数据集、端到端AI工程化能力以及应用生态伙伴等维度综合考虑,慎重选择合作伙伴。 中大型企业虽倾向于大模型的私有化部署,但由于中美

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包