【问题标题】:Python Graphing data from input filePython从输入文件中绘制数据
【发布时间】:2021-04-01 23:20:13
【问题描述】:

我需要从之前的作业中获取天气数据并制作各种图表。我最麻烦的数据集是描述。到目前为止,我只有数据文件。我知道我需要运行一个 for 循环来读取它并使数据可绘制。到目前为止,我所做的只是在文件中读取。

descriptions = open('descriptions.txt', 'r',encoding=('utf-8'))

数据如下所示。我最终需要做的是制作一个条形图,计算某些关键字的实例(例如下雨或阵雨为雨。晴天/晴天等)。我将如何运行循环以使日子与正确的城市相关联?然后我如何将字数与正确的日期联系起来?

克利夫兰数据
周日克利夫兰
可能有阵雨和片状雾,大雨和片状雾,然后是小概率阵雨,晴朗和微风,晴朗,阳光充足,云层增加
星期一克利夫兰
晴天,晴天,大部分晴天,先有阵雨,然后有阵雨,有阵雨,有阵雨,然后有部分晴天和微风
周二克利夫兰
晴天,云层增多,可能有阵雨,然后下雨,下雨,可能有阵雨,部分多云和大风

底特律数据
周日底特律
小概率阵雨,逐渐晴空,晴天,晴天,晴天,多云,然后可能有阵雨
星期一底特律
晴,晴,多云,然后可能有阵雨,阵雨,偶有阵雨,然后偶有雨/雪,部分晴,大部分晴
周二底特律
有阵雨,有轻微阵雪,然后有阵雨/降雪,有轻微阵雪,然后大部分晴天,晴天,晴天,晴天

【问题讨论】:

  • 好吧,您可以将每个单词与城市名称列表进行比较,如果它与城市名称匹配,则后面的所有文本都来自该城市,依此类推
  • 另一种方法是在城市中拆分文件数据,这取决于城市数据的分离方式。比如是信息块\n\n之间的空间吗?
  • @Matiiss 是的。现在在一个城市最后一天的数据是\n\n

标签: python for-loop matplotlib


【解决方案1】:

好的,这就是我的看法(用 cmets 解释;如果你有问题,可以问他们):

# 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)

这是输入文件(行显示文件的边界):

克利夫兰数据 周日克利夫兰 可能有阵雨和片状雾,大雨和片状雾,然后有少量阵雨,阳光明媚,微风习习,晴朗,阳光充足,云层增加 星期一克利夫兰 晴天,晴天,大部分晴天,先有阵雨,然后有阵雨,有阵雨,有阵雨,然后有部分晴天和微风 周二克利夫兰 晴天,云层增多,可能有阵雨,然后下雨,下雨,可能有阵雨,部分多云和大风

底特律数据 周日底特律 小概率阵雨,逐渐晴天,晴天,晴天,晴天,多云,然后可能有阵雨 星期一底特律 晴天、晴天、部分多云然后可能有阵雨、阵雨、偶有阵雨然后偶有雨/雪天、部分晴天、大部分晴 周二底特律 有阵雨,有轻微阵雪,然后有阵雨/降雪,有轻微阵雪,然后大部分晴天,晴天,晴天,晴天

两个信息块之间有两个空格,行和信息块之间没有空格

【讨论】:

    猜你喜欢
    • 2017-12-12
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多