python - Python从输入文件中绘制数据
问题描述
我需要从以前的作业中获取天气数据并制作各种图表。我最麻烦的数据集是描述。到目前为止,我只有数据文件。我知道我需要运行一个 for 循环来读取它并使数据可绘制。到目前为止,我所做的只是在文件中读取。
descriptions = open('descriptions.txt', 'r',encoding=('utf-8'))
数据看起来像这样。我最终需要做的是制作一个条形图,计算某些关键字的实例(例如下雨或阵雨为雨。晴天/晴天等)。我将如何运行循环以使日子与正确的城市相关联?然后我如何将字数与正确的日子联系起来?
克利夫兰数据
星期天克利夫兰
阵雨 可能有阵雨和大雾,大雨和阵阵大雾,然后有轻微阵雨,晴天和微风,晴,晴,多云
星期一克利夫兰
晴,晴,大部分晴,阵雨然后阵雨,阵雨,阵雨然后部分阵雨
周二阳光明媚,微风轻拂克利夫兰
晴朗,多云,有小阵雨,然后下雨,下雨,可能有阵雨,部分多云和大风
底特律数据
周日 底特律
小概率阵雨,逐渐晴天,晴天,晴天,晴天,多云,然后可能有阵雨 星期一
底特律
晴天,晴天,部分多云,然后可能阵雨,阵雨,偶有阵雨,然后偶有雨/雪,部分晴天,大部分晴天
底特律
有阵雨,有轻微阵雪,然后有阵雨/降雪,有轻微阵雪,然后基本晴,晴,晴,晴
解决方案
好的,这是我的看法(评论中的解释;如果您有问题,请询问他们):
# opens and reads the whole file
with open('text_file.txt') as file:
data = file.read()
# splits read data in groups between whom are \n\n and stores them in a list
data = data.split('\n\n')
# creates a dictionary
data_by_city = {}
# this loops over each section in the data list (each city info block)
for item in data:
# creates a dictionary to store text info
city_data = {}
# for each city info entry removes all \n
item = item.replace('\n', ' ')
# splits each city info by spaces
split_item = item.split(' ')
# checks if word is in city_data and if not then adds it if it exists adds up the count
for word in split_item:
if word not in city_data.keys():
city_data[word] = 1
else:
city_data[word] += 1
# creates an entry for data_by_city and makes the key name of the city and city_data as the assigned value
data_by_city[split_item[0] if split_item[0] != '' else split_item[1]] = city_data
# prints data_by_city
print(data_by_city)
这是输入文件(行显示文件的边界):
克利夫兰数据 星期天克利夫兰阵雨 可能有阵雨和大雾,大雨和阵阵大雾,然后有轻微阵雨,晴天和微风,晴,晴,多云 星期一克利夫兰晴,晴,大部分晴,阵雨然后阵雨,阵雨,阵雨然后部分阵雨周二阳光明媚,微风轻拂 克利夫兰 晴朗,多云,有小阵雨,然后下雨,下雨,可能有阵雨,部分多云和大风
底特律数据 周日 底特律 小概率阵雨,逐渐晴天,晴天,晴天,晴天,多云,然后可能有阵雨 星期一 底特律晴天,晴天,部分多云,然后可能阵雨,阵雨,偶有阵雨,然后偶有雨/雪,部分晴天,大部分晴天底特律有阵雨,有轻微阵雪,然后有阵雨/降雪,有轻微阵雪,然后基本晴,晴,晴,晴
并且两个信息块之间有两个空格,并且行和信息块之间没有空格
推荐阅读
- python - Py2Neo V4 - 即使是字符串值也能起作用
- android - 如何使用 Firebase Cloud 消息发送群组通知?
- javascript - 从缩小的脚本中分离一个 javascript 文件的最佳方法是什么?
- ios - 访问物理设备上的文档目录
- reactjs - 使用 REACT.js 的 SPA 导航栏
- android - 将我的 EditText 输入转换为可观察的流
- sql - 计算变量属性的问题
- java - RequestFocus 和 ReqeustFocusFromTouch 的区别?
- android - 如何从 admob 添加 NATIVE 广告?
- push-notification - 使用 PHP 发送推送通知