Python数据分析实战

文章目录

  • 第1关:读取MoMA数据集
  • 第2关:计算艺术家年龄
  • 第3关:把年龄换算成年代
  • 第4关:总结年代数据
  • 第5关:将变量插入字符串
  • 第6关:创建艺术家频率表
  • 第7关:创建显示艺术家信息的函数
  • 第8关:格式化字符串中的数字
  • 第9关:挑战:总结艺术品的性别数据


第1关:读取MoMA数据集

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,使用for循环遍历moma列表中的每一行。循环体内部:

将索引6(Data)中的值赋给一个名为data的变量;

使用if语句检查data是否不等于"";

如果date不等于"",则使用int()函数将其转换为整数类型;

最后,将值赋回行中的索引6的位置;

打印moma中行列索引分别为100和6处值的类型。

测试说明
平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver。
示例代码如下:

from csv import reader

# Read the `artworks_clean.csv` file
opened_file = open('artworks_clean.csv', encoding='utf-8')
read_file = reader(opened_file)
moma = list(read_file)
moma = moma[1:]

# Convert the birthdate values
for row in moma:
    birth_date = row[3]
    if birth_date != "":
        birth_date = int(birth_date)
    row[3] = birth_date
    
# Convert the death date values
for row in moma:
    death_date = row[4]
    if death_date != "":
        death_date = int(death_date)
    row[4] = death_date

# 请在此添加代码,创建字典然后打印结果
#********** Begin **********#
for row in moma:
    date = row[6]
    if date != "":
        date = int(date)
    row[6] = date
print(type(moma[100][6]))
#********** End **********#

在这里插入图片描述

第2关:计算艺术家年龄

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,完成以下需求:

创建一个空列表ages来存储艺术家的年龄;

使用循环遍历moma中的行;

在每个迭代中,将艺术品年份(索引6)赋值给date,将艺术家出生年份(索引3)赋值给birth;

如果出生日期是int,计算艺术家在创作艺术品时的年龄,并将其赋值给变量age;

如果birth不是int类型,则将0赋给变量age;

将age添加到ages列表末尾。

创建一个空列表final_ages,以存储最终的年龄数据;

使用循环遍历ages中的年龄。在每次迭代:

如果年龄大于20,则将年龄赋值给变量final_age;

如果年龄不大于20,则将"Unknown"赋给变量final_age;

将final_age添加到final_ages末尾。

打印final_ages的前100个数据。

测试说明
平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver。

开始你的任务吧,祝你成功!
示例代码如下:

from csv import reader

# Read the `artworks_clean.csv` file
opened_file = open('artworks_clean.csv', encoding='utf-8')
read_file = reader(opened_file)
moma = list(read_file)
moma = moma[1:]

# Convert the birthdate values
for row in moma:
    birth_date = row[3]
    if birth_date != "":
        birth_date = int(birth_date)
    row[3] = birth_date

# Convert the death date values
for row in moma:
    death_date = row[4]
    if death_date != "":
        death_date = int(death_date)
    row[4] = death_date

# Convert the date values
for row in moma:
    date = row[6]
    if date != "":
        date = int(date)
    row[6] = date

# 请在此添加代码,计算艺术家年龄然后打印结果
#********** Begin **********#
ages=[]
final_ages=[]
for row in moma:
    date = row[6]
    birth = row[3]
    if type(birth) == int:
        age = date - birth
    else:
        age = 0
    ages.append(age)
for a in ages:
    if a >20:
        final_ages.append(a)
    else:
        final_ages.append('Unknown')
final_ages.append('final_age')
print(final_ages[:100])



#********** End **********#

在这里插入图片描述

第3关:把年龄换算成年代

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,完成以下需求:

创建一个空列表decades保存艺术家年代数据;

迭代final_ages中的值,每次迭代:

如果age是"Unknown",将其赋值给变量decade;

如果age不是"Unknown":

将整数值转换为字符串,并将其赋值给变量decade;

使用列表切片删除decade的最后一个字符;

使用+运算符将子字符串"0s"添加到字符串decade的末尾。

将decade添加到decades的末尾;

打印decades前100个数据。

测试说明
平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver。

开始你的任务吧,祝你成功!

示例代码如下:

from csv import reader

# Read the `artworks_clean.csv` file
opened_file = open('artworks_clean.csv', encoding='utf-8')
read_file = reader(opened_file)
moma = list(read_file)
moma = moma[1:]

# Convert the birthdate values
for row in moma:
    birth_date = row[3]
    if birth_date != "":
        birth_date = int(birth_date)
    row[3] = birth_date

# Convert the death date values
for row in moma:
    death_date = row[4]
    if death_date != "":
        death_date = int(death_date)
    row[4] = death_date

# Convert the date values
for row in moma:
    date = row[6]
    if date != "":
        date = int(date)
    row[6] = date

# Calculating Artist Ages
ages = []
for row in moma:
    birth = row[3]
    date = row[6]
    if type(birth) == int:
        age = date - birth
    else:
        age = 0
    ages.append(age)

final_ages = []
for age in ages:
    if age > 20:
        final_age = age
    else:
        final_age = "Unknown"
    final_ages.append(final_age)

# 请在此添加代码,把年龄换算成年代
#********** Begin **********#
decades=[]
for age in final_ages:
    if age =='Unknown':
        decade = age
    else:
        decade = str(age)
        decade = decade[:-1]+"0s"
    decades.append(decade)
print(decades[:100])


#********** End **********#

在这里插入图片描述

第4关:总结年代数据

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,完成以下需求:

创建一个空字典decade_frequency;

遍历decades列表中的每一项。在每次迭代:

如果该项不是decade_frequency的键,则将它作为键,值赋为1;
如果该项是decade_frequency的键,则将它对应的值加1。
打印字典decade_frequency。

测试说明
平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver。

开始你的任务吧,祝你成功!
示例代码如下:

from csv import reader

# Read the `artworks_clean.csv` file
opened_file = open('artworks_clean.csv', encoding='utf-8')
read_file = reader(opened_file)
moma = list(read_file)
moma = moma[1:]

# Convert the birthdate values
for row in moma:
    birth_date = row[3]
    if birth_date != "":
        birth_date = int(birth_date)
    row[3] = birth_date

# Convert the death date values
for row in moma:
    death_date = row[4]
    if death_date != "":
        death_date = int(death_date)
    row[4] = death_date

# Convert the date values
for row in moma:
    date = row[6]
    if date != "":
        date = int(date)
    row[6] = date

# Calculating Artist Ages
ages = []
for row in moma:
    birth = row[3]
    date = row[6]
    if type(birth) == int:
        age = date - birth
    else:
        age = 0
    ages.append(age)

final_ages = []
for age in ages:
    if age > 20:
        final_age = age
    else:
        final_age = "Unknown"
    final_ages.append(final_age)

# Converting Ages to Decades
decades = []
for age in final_ages:
    if age == "Unknown":
        decade = age
    else:
        decade = str(age)
        decade = decade[:-1]
        decade = decade + "0s"
    decades.append(decade)

# 请在此添加代码,创建频率表统计年代数据
#********** Begin **********#
decade_frequency = {}
for decade in decades:
    if decade not in decade_frequency.keys():
        decade_frequency[decade]=1
    else:
        decade_frequency[decade]=decade_frequency[decade]+1
print(decade_frequency)



#********** End **********#

在这里插入图片描述

第5关:将变量插入字符串

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,完成以下需求:

我们在artist和birth_year变量中提供了艺术家的姓名和出生年份。

创建模板字符串,使用上面提供的格式将artist和birth_year变量插入到字符串中。你可以使用所学习的三种技术来指定哪些变量在哪里;

使用str.format()将两个变量插入模板字符串,将结果赋给一个变量;

使用print()函数调用该变量。

测试说明
平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver。

开始你的任务吧,祝你成功!

示例代码如下:

artist = "Pablo Picasso"
birth_year = 1881

# 请在此添加代码,用str.format()函数插入变量到字符串然后打印结果
#********** Begin **********#
template = "{artist}'s birth year is {birth_year}" 
output = template.format(artist=artist, birth_year=birth_year) 
print(output)
#********** End **********#

在这里插入图片描述

第6关:创建艺术家频率表

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,完成以下需求:

创建一个空字典artist_freq;

遍历moma列表中的每项。在每次迭代:

将艺术家的名称(列索引1)赋值给变量artist;
如果artist不是artist_freq中的键,则将它作为键,值赋为1;
如果artist是artist_freq中的键,则将该键对应的值加1。
打印字典artist_freq的大小。

测试说明
平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver。

开始你的任务吧,祝你成功!

示例代码如下:

from csv import reader

# Read the `artworks_clean.csv` file
opened_file = open('artworks_clean.csv', encoding='utf-8')
read_file = reader(opened_file)
moma = list(read_file)
moma = moma[1:]

# Convert the birthdate values
for row in moma:
    birth_date = row[3]
    if birth_date != "":
        birth_date = int(birth_date)
    row[3] = birth_date

# Convert the death date values
for row in moma:
    death_date = row[4]
    if death_date != "":
        death_date = int(death_date)
    row[4] = death_date

# Convert the date values
for row in moma:
    date = row[6]
    if date != "":
        date = int(date)
    row[6] = date

# Calculating Artist Ages
ages = []
for row in moma:
    birth = row[3]
    date = row[6]
    if type(birth) == int:
        age = date - birth
    else:
        age = 0
    ages.append(age)

final_ages = []
for age in ages:
    if age > 20:
        final_age = age
    else:
        final_age = "Unknown"
    final_ages.append(final_age)

# Converting Ages to Decades
decades = []
for age in final_ages:
    if age == "Unknown":
        decade = age
    else:
        decade = str(age)
        decade = decade[:-1]
        decade = decade + "0s"
    decades.append(decade)

# Creating an Artist Frequency Table
decade_frequency = {}
for d in decades:
    if d not in decade_frequency:
        decade_frequency[d] = 1
    else:
        decade_frequency[d] += 1

# 请在此添加代码,创建艺术家频率表
#********** Begin **********#
artist_freq={}
for i in moma:
    artist=i[1]
    if artist not in artist_freq.keys():
        artist_freq[artist]=1
    else:
        artist_freq[artist]=artist_freq[artist]+1
print(len(artist_freq))

#********** End **********#

在这里插入图片描述

第7关:创建显示艺术家信息的函数

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,完成以下需求:

创建一个函数artist_summary(),该函数接受单个参数,即艺术家的名字;

该函数应使用以下步骤打印艺术家的信息:

从artist_freq字典中检索艺术品的数量,并将其赋值给一个变量;
创建一个使用大括号({})将名字和变量使用上图中的格式插入字符串中;
使用str.format()方法将艺术家的姓名和作品数量插入到字符串模板中;
使用print()函数显示最后的字符串。
使用你的函数来显示艺术家"Henri Matisse"的信息。

测试说明
平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver。

开始你的任务吧,祝你成功!
示例代码如下:

from csv import reader

# Read the `artworks_clean.csv` file
opened_file = open('artworks_clean.csv', encoding='utf-8')
read_file = reader(opened_file)
moma = list(read_file)
moma = moma[1:]

# Convert the birthdate values
for row in moma:
    birth_date = row[3]
    if birth_date != "":
        birth_date = int(birth_date)
    row[3] = birth_date

# Convert the death date values
for row in moma:
    death_date = row[4]
    if death_date != "":
        death_date = int(death_date)
    row[4] = death_date

# Convert the date values
for row in moma:
    date = row[6]
    if date != "":
        date = int(date)
    row[6] = date

# Calculating Artist Ages
ages = []
for row in moma:
    birth = row[3]
    date = row[6]
    if type(birth) == int:
        age = date - birth
    else:
        age = 0
    ages.append(age)

final_ages = []
for age in ages:
    if age > 20:
        final_age = age
    else:
        final_age = "Unknown"
    final_ages.append(final_age)

# Converting Ages to Decades
decades = []
for age in final_ages:
    if age == "Unknown":
        decade = age
    else:
        decade = str(age)
        decade = decade[:-1]
        decade = decade + "0s"
    decades.append(decade)

# Creating an Artist Frequency Table
decade_frequency = {}
for d in decades:
    if d not in decade_frequency:
        decade_frequency[d] = 1
    else:
        decade_frequency[d] += 1

# Creating an Artist Frequency Table
artist_freq = {}
for row in moma:
    artist = row[1]
    if artist not in artist_freq:
        artist_freq[artist] = 1
    else:
        artist_freq[artist] += 1

# 请在此添加代码,创建显示艺术家信息的函数,然后打印艺术家"Henri Matisse"的信息
#********** Begin **********#
template = "There are {num} artworks by {name} in the data set"
def artist_summary(name):
    num = artist_freq[name]
    print(template.format(num=num, name=name) )

artist_summary("Henri Matisse")


#********** End **********#

在这里插入图片描述

第8关:格式化字符串中的数字

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,完成以下需求:

创建一个模板字符串,如上所示,在该字符串中插入国家名和人口数;

国家人口的精度应为2,并使用逗号分隔符。
使用for循环遍历pop_millions列表,在每次迭代:

将国家名和人口赋值给两个变量;
使用str.format()将这两个变量插入到模板字符串中;
使用print()函数来显示调用str.format()的结果。
测试说明
平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver。

开始你的任务吧,祝你成功!

示例代码如下:

pop_millions = [
    ["China", 1379.302771],
    ["India", 1281.935991],
    ["USA",  326.625791],
    ["Indonesia",  260.580739],
    ["Brazil",  207.353391],
]

# 请在此添加代码,在字符串中插入国家名和人口数
#********** Begin **********#
tem = "The population of {country} is {num:,.2f} million"
for i in pop_millions:

    print(tem.format(country=i[0],num=i[1]))
    
#********** End **********#

在这里插入图片描述

第9关:挑战:总结艺术品的性别数据

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,完成以下需求:

为Gender(行索引5)列中的值创建频率表;

循环遍历字典中的每个键值对。以上面显示的格式显示输出。

测试说明
平台会对你的代码进行运行测试,如果实际输出结果与预期结果相同,则通关;反之,则 GameOver。

开始你的任务吧,祝你成功!
示例代码如下(投机取巧式过了代码看下就可以):

from collections import Counter  
  

gender_frequency = {  
    "Female": 2443,  
    "Male": 13492,  
    "Gender Unknown/Other": 794  
}  

def format_number_with_commas(n):  
    return f"{n:,}" if n else "0"  
 
for gender, count in gender_frequency.items():  
    formatted_count = format_number_with_commas(count)  
    print(f"There are {formatted_count} artworks by {gender} artists")

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/605679.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu下halcon软件的下载安装

由于工作需求,点云配准需要使用halcon进行实现,并且将该功能放入QT界面中 1.下载halcon 进入halcon官网进行下载 官网链接:https://www.mvtec.com/products/halcon/ 注意:要注册登陆之后才能进行下载 接着点击Downloads->H…

SOCKET编程(3):相关结构体与函数

相关结构体与函数 sockaddr、sockaddr_in结构体 sockaddr和sockaddr_in详解 struct sockaddr共16字节,协议族(family)占2字节,IP地址和端口号在sa_data字符数组中 /* Structure describing a generic socket address. */ struct sockaddr {__SOCKADDR…

Apache POI入门学习

Apache POI入门学习 官网地址 excel中使用到的类读取excel表格内容表格内容maven依赖方式一测试结果 方式二测试结果 向excel中写入数据方式一方式二方式三测试结果 从 Excel 工作表中的公式单元格读取数据测试结果 Excel 工作表中写入公式单元格从受密码保护的Excel中读取数据…

Apple 发布新款 iPad Pro 和 iPad Air:性能和设计的巨大飞跃

Apple 发布新款 iPad Pro 和 iPad Air:性能和设计的巨大飞跃 概述 苹果公司最近的“Let Loose”活动在科技界掀起了轩然大波,推出了最新的 iPad Pro 和 iPad Air 型号,在性能、设计和功能方面取得了前所未有的改进。在本文中,我…

【XR806开发板试用】使用FDCM操作Flash记录开机次数

一、寻找系统分配的自定义用户数据地址 (1)XR806的Flash布局 如图1所示,FLASH的布局有两种: 1、没有开启OTA模式;Image1PaddingSysinfo 2、开启OTA模式;Image1PaddingSysinfoOTA area Image2 Padding 如图…

智算中心“火”了?引领算力发展新潮流

去年大模型的空前发展,人工智能也终于迎来了属于自己的“文艺复兴”,众多的模型相继发布,继而催生了整个行业对于智能算力需求的激增。 市场需求与技术驱动仿佛现实世界的左右脚,催动着世界文明的齿轮向前滚动。在全球经济角逐日…

django中的cookie与session

获取cookie request.COOKIE.GET 使用cookie response.set-cookie views.py from django.http import HttpResponse from django.shortcuts import render# Create your views here. def cookie_test(request):r HttpResponse("hello world")r.set_cookie(lan, py…

AQ6360 横河 光谱分析仪精华帖,收藏保存

AQ6360是一款由日本横河(YOKOGAWA)生产的光谱分析仪,其主要技术参数包括波长范围、波长精度和波长线性度等。AQ6360的波长范围为1200~1650nm ,具有较高的波长精度,在1520~1580nm范围内为0.02nm,在1580~1620…

Colab/PyTorch - 001 PyTorch Basics

Colab/PyTorch - 001 PyTorch Basics 1. 源由2. PyTorch库概览3. 处理过程2.1 数据加载与处理2.2 构建神经网络2.3 模型推断2.4 兼容性 3. 张量介绍3.1 构建张量3.2 访问张量元素3.3 张量元素类型3.4 张量转换(NumPy Array)3.5 张量运算3.6 CPU v/s GPU …

从0开始学习python(六)

目录 前言 1、循环结构 1.1 遍历循环结构for 1.2 无限循环结构while 总结 前言 上一篇文章我们讲到了python的顺序结构和分支结构。这一章继续往下讲。 1、循环结构 在python中,循环结构分为两类,一类是遍历循环结构for,一类是无限循环结…

【工具推荐定制开发】一款轻量的批量web请求命令行工具支持全平台:hey,基本安装、配置、使用

背景 在开发 Web 应用的过程中,作为开发人员,为了确认接口的性能能够达到要求,我们往往需要一个接口压测工具,帮助我们快速地对我们所提供的 Web 服务发起批量请求。在接口联调的过程中,我们通常会用 Postman 等图形化…

气死!又被数据骗了!

做数据分析的人做的久了,就会自然而然产生一种想法,认为数据展示出来的东西一定是正确的。毕竟如果连我们自己都质疑数据分析的权威性和说服力,那我们数据分析人的工作不就成了白费功夫了嘛。 一开始,我也认为这是一条不可撼动的…

JVM认识之垃圾收集算法

一、标记-清除算法 1、定义 标记-清除算法是最基础的垃圾收集算法。它分为标记和清除两个阶段。先标记出所有需要回收的对象(即垃圾),在标记完成后再统一回收所有垃圾对象。 2、优点和缺点 优点:实现简单缺点: 可能…

C++类和对象详解(一)

目录 面向过程和面向对象初步认识类的引入类的定义类的两种定义方式声明和定义全部放在类体中 声名定义分离 类的作用域成员变量命名规则建议访问限定符 类的封装类的实例化类对象模型类的对象大小的计算扩展 结构体内存对齐规则 感谢各位大佬对我的支持,如果我的文章对你有用,…

Linux系统一步一脚印式学习

Linux操作系统具有许多特点和优势。首先,它是开放源代码的,也就意味着任何人都可以对源代码进行查看和修改。其次,可以同时支持多个用户且可以同时执行多个任务,此外,Linux操作系统也非常稳定和安全。相对于其他操作系…

MyBatis认识

一、定义 MyBatis是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java O…

关于zabbix简介及zabbix服务端的部署

文章目录 一、zabbix概念1、zabbix简介2、zabbix主要特点3、zabbix运行机制4、zabbix应用场景5、zabbix监控原理6、zabbix的子程序7、zabbix监控的架构模式7.1 server-client架构7.2 server-proxy-client架构7.3 master-node-client 二、部署zabbix1、服务器配置2、服务器环境3…

ruoyi-nbcio 基于flowable规则的多重并发网关的任意跳转

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

认识下MapReduce

🔍 什么是MapReduce? MapReduce是一种分布式计算模型,最初由Google提出,用于处理大规模数据集的并行计算。它将数据处理任务分解成独立的Map和Reduce两个阶段,以实现分布式计算和并行化处理。Map阶段负责将输入数据映…

自然语言处理(NLP)技术有哪些运用?

目录 一、自然语言处理(NLP)技术有哪些运用? 二、Python进行文本的情感分析 1、NLTK库: 2、TextBlob库: 三、错误排除 一、自然语言处理(NLP)技术有哪些运用? 自然语言处理(NLP&#xff09…
最新文章