Python-Project-8-学习笔记
[TOC]
任务一:导入数据(文件 ➔ 变量)
- 结合之前我们已经写过的读取文件的代码,读取
Android数据集和iOS数据集,并将它们另存为包含列表的列表:App Store数据集存储在名为AppleStore.csv的CSV文件中,Google Play数据集存储在名为googleplaystore.csv的CSV文件中。两个CSV文件数据集已保存在assets/dataset文件夹中。- 如果遇到名为
UnicodeDecodeError的错误,请在open()函数中添加encoding=“utf8”,例如,使用open('AppleStore.csv', encoding='utf8')。 - 你需要分别将
Android数据集的标题行和数据集内容存放到android_header和android两个不同的列表中,ios同理要存放到ios_header和ios两个列表中。
- 使用
Explore_data()函数浏览两个数据集。- 打印每个数据集的前
3行,每个数据行之间要空一行。 - 查找每个数据集的行数和列数。
- 打印每个数据集的前
from csv import reader |
任务二:数据清洗(删除错误和重复)
- 创建一个名为
reviews_max的空字典:- 每个字典键是一个唯一的应用程序名称,对应的字典值是该应用程序的最高评论数。
- 循环浏览
Google Play数据集,其中每次迭代需要完成:- 将应用程序名称分配给名为
name的变量。 - 将评论数转换为浮点数。将其分配给一个名为
n_reviews的变量。 - 如果
name已作为字典的键存在于reviews_max字典中,并且reviews_max[name]<n_reviews,则更新reviews_max字典中该条目的评论数。 - 如果
name不作为字典的键存在于reviews_max字典中,则在字典中创建一个新条目,其中键是name,值是reviews的数量。请确保此处使用elif而不是使用else,否则每当reviews_max[name]<n_reviews时,都会被计算为False,并且会错误地更新评论数。
- 将应用程序名称分配给名为
- 最后为了确保计算正确,字典的预期长度是
9659个条目(9660也是对的)
- 使用上面创建的词典删除重复行:
- 首先创建两个空列表:
android_clean(它将存储我们新清理的数据集)和already_added(它只存储应用程序名称)。 - 循环浏览
Google Play数据集,其中每次迭代需要完成:- 将应用程序名称分配给名为
name的变量。 - 将评论数量转换为浮动,并将其分配给名为
n_reviews的变量。
- 将应用程序名称分配给名为
- 如果
n_reviews与应用程序名称name的最大评论数相同(可以在评论最大词典中找到该数字),并且name不在已添加的列表中:- 将整行追加到
android_clean列表(它最终将是一个包含列表的列表的存储已清理的数据集)。 - 将应用程序名称
name添加到already_added列表中,这有助于我们跟踪已添加的应用程序。
- 将整行追加到
- 首先创建两个空列表:
- 探索
android_clean数据集,确保一切按预期进行,数据集应该有9659行,以上两个步骤比较复杂(9660也是对的)
# ... 保留任务一中的全部代码 |
任务三:删除非英语应用
编写一个函数,它接受一个字符串,如果输入字符串有超过三个字符超出ASCII范围(0-127),则函数应返回False,否则应返回True。
- 在函数内部,迭代遍历输入字符串。对于每次迭代,检查与字符对应的ASCII码是否大于127。当有超过三个字符大于127时,函数应立即返回False,应用程序名可能不是英语,因为它包含不属于通用英语字符集的字符。
- 如果循环正常执行,则表示没有字符对应的ASCII码超出ASCII范围(0-127),应用程序名称可能是英语,因此函数应返回True。
浏览数据集,查看每个数据集剩余多少行。
# ... 保留之前的所有代码 |
任务四:删除非免费的应用
# ... 保留之前的所有代码 |