Python-Project-9-学习笔记
[TOC]
练习 1
- 使用
open()函数打开artworks.csv文件,将结果赋值给opened_file- 可以使用
open('dataset/artworks.csv')
- 可以使用
- 使用
reader()函数解析opened_file中的数据,将结果赋值给read_file - 使用
list()将read_file转换为表的表,将结果赋值给moma。 - 使用列表切片从
moma列表的列表中删除第一行的列名
from csv import reader |
练习 2
- 使用
str.replace()方法将 “I am thirty-one years old” 修改为 “I am thirty-two years old”
print("I am thirty-one years old".replace("one","two")) |
练习 3
- 请你按照相同方法删除
Gender列中的括号(索引5)- 为每一行的性别数据指定一个变量名并复制给它
- 使用
str.replace()方法删除左括号 ( 字符 - 使用
str.replace()方法删除右括号 ) 字符 - 将清理后的值重新分配给
Gender列(索引5)
from csv import reader |
练习 4
- 集成上述功能,将
Gender【5】 和Nationality【2】 列的数据大小写统一,若缺少值的话需要标记为Gender Unknown/Other或Nationality unknown
from csv import reader |
练习 5
- 集成上述代码,清理除第一行列名称外的前50组数据,输出格式为
[1928, 1984]这样 - 将在
for循环中判断是否为空数据的功能移动到clean_and_convert()函数中,最终的输出效果不变
from csv import reader |
练习 6
让我们使用这种方法来清理整个数据集的
Date列,为了简化操作,我们建议使用两个辅助变量:test_data:- 这是我们在上面看到的字符串列表。
- 此列表代表数据集
Date列中的值, - 它允许您在不查看17000个日期的情况下查看代码的效果。
bad_chars:- 这是需要替换的字符列表。
- 这意味着你要花时间考虑代码的结构,
- 找到全部要删除的字符。
最终效果,应该是所有
Date列中的数据变成了一个年份或一个年份范围。创建一个名为
strip_characters()的函数,该函数接受一个字符串参数并:- 遍历
bad_chars列表,使用str.replace()删除每个字符。 - 返回已清理的字符串。
- 遍历
创建一个空列表,
stripped_test_data。迭代
test_data中的字符串,每次迭代:- 使用前面创建的函数来清理字符串。
- 将清理的字符串添加到
stripped_test_data列表。
# 练习区域 |
练习 7
- 使用上述回忆的函数和逻辑清理年份或年份范围数据,使得我们拿到一份干净的、只有4位数字的年份数据。
- 为了完成这个练习,你可以构建一个名为
process_date()的函数,该函数适用于每个Date列中的数据,当然我们建议你编写完这个函数后可以用一个小数据集进行测试,看看你写的函数有么有遇到报错。 - 检查短划线字符(
-)是否在字符串中,以确认该数据是否是一个年份范围。 - 如果是一个年份范围:
- 在破折号字符前后将字符串拆分为两个字符串。
- 将这两个数字转换为整数类型,然后将这两个年份之和除以2来求平均值。
- 使用
round()函数对平均值进行舍入,以确保数据变成了整数,因此类似1964.5的值变为1964。
- 如果日期不是一个年份范围:
- 将值转换为整数类型。
- 最后,返回值。
- 使用
process_date()函数遍历moma列表。在每次迭代中:- 将
Date列(索引6)中的值赋给变量。 - 使用任务六中编写好的
strip_characters()函数删除错误字符。 - 使用
process_date()函数转换日期。 - 将剥离和处理后的值重新分配给对应行。
- 将
from csv import reader |
总结
恭喜,你已经掌握了:
- 删除不需要的字符以“清理”字符串数据。
- 通过替换字符并统一大小写,使数据更加统一。
- 处理数据清理过程中的错误。
- 解析并清理复杂的字符串。
我们一起回顾刚刚遇到的困难和总结出来的经验:
语法
- 替换字符串中的子字符串:
green_ball = "red ball".replace("red", "green") |
- 删除子字符串:
friend_removed = "hello there friend!".replace(" friend", "") |
- 从字符串中删除一系列字符:
bad_chars = ["'", ",", ".", "!"] |
- 将字符串转换为首字母大写:
Hello = "hello".title() |
- 检查字符串中是否存在子字符串:
if "car" in "carpet": |
- 将字符串拆分为字符串列表:
split_on_dash = "1980-12-08".split("-") |
- 按位置从字符串中切出字符:
last_five_chars = "This is a long string."[:5] |
- 连接字符串:
superman = "Clark" + " " + "Kent" |
概念
- 在
Python中读取CSV格式的表格时,通常以“包含列表的列表”格式存储数据。