4.2 数据处理应用实例
理解数据
Cooking time: 20 mins active / 30 mins passive
Tasks For Coaches: 教练讲解和演示该节内容,请教练灵活应变。
理解数据的几个层次:
形式理解:了解数据文件的格式
逻辑理解:理解数据的逻辑组织方式,哪个字段代表什么意思
统计理解:理解数据的分布,是否异常,是否可以解释等等,有些可以通过绘图直观的表达
常见的数据格式:
Excel 数据表格,文档结构复杂,需要用专门的库去解析。Pandas 集成了读写 Excel 文件的库。
CSV 源文件容易阅读的数据表格,首行是表头,从第二行起每行是一条记录。
JSON 如前述,可以用 Python 自带的 JSON 库去处理。
XML 类似于 HTML,但是标签需要严格闭合,也可以用 BeautifulSoup 处理。
应用示例(提取信息)
示例:从免费词典资源提取一个简化版(只含单词和定义)的词典。
假设我们能下载到这么一个词典数据 https://raw.githubusercontent.com/skywind3000/ECDICT/master/ecdict.csv
下载:
import request
response = request("https://raw.githubusercontent.com/skywind3000/ECDICT/master/ecdict.csv")
with open("ecdict.csv", "w") as f:
f.write(response.text)
它是一个 CSV 文件,用编辑器或者表格处理软件打开,观察文件的结构:
word,phonetic,definition,translation,pos,collins,oxford,tag,bnc,frq,exchange,detail,audio
hood,hʊd,,"n. 罩;风帽;(布质)面罩;学位连领帽(表示学位种类)\nv. 覆盖;用头巾包;使(马,鹰等)戴头罩;给…加罩\n[网络] 胡德;兜帽;引擎盖",,,,,0,0,,,
...
由第一行表头信息可知,单词(word)是第一列(对应下标 0),定义(definition)是第三列(对应下标 2)。
Python 内建了处理 CSV 的库函数,我们可以写一个循环去提取这两列:
# encoding: utf-8
import csv
result = {}
with open("ecdict.csv", "r") as f:
for row in csv.reader(f):
word = row[0]
definition = row[2]
result[word] = definition
然后把结果写进文件里:
with open("simplifided.csv", "w") as f:
for word, definition in result.items():
f.write(word)
f.write(":")
f.write(definition)
f.write("\n")
注:此示例参考了 https://blog.plover.com/lang/ambiguous.html
思考:如果这是一个英语到中文的词典,而我们想要得到中文到英文的解释,可以怎么做?
延伸阅读:网上搜索"倒排索引",并尝试理解。
Last updated
Was this helpful?