Albus (Игорь Китаев)
Albus (Игорь Китаев) личный блог
09 июля 2020, 10:41

Место России по поголовью домашних животных

Продолжаем качать Питоном и изучать статистику ООН по сельскому хозяйству. На это раз — поголовье домашних животных.
http://www.fao.org/faostat/en/#data/QA
Скрипт скачивает данные, анализирует, отсылает в гугл для перевода и записывает результаты в файл rank.txt. Он появится сам в папке, где вы положите скрипт.
---
В файл записывается это:

Russian Federation has the 6 place in the world in the number of Beehives
Российская Федерация занимает 6 место в мире по количеству ульев
Russian Federation has the 6 place in the world in the number of Ducks
Российская Федерация занимает 6 место в мире по количеству уток
Russian Federation has the 7 place in the world in the number of Geese and guinea fowls
Российская Федерация занимает 7 место в мире по количеству гусей и цесарок
Russian Federation has the 7 place in the world in the number of Pigs
Российская Федерация занимает 7 место в мире по количеству свиней
Russian Federation has the 7 place in the world in the number of Rabbits and hares
Российская Федерация занимает 7 место в мире по количеству кроликов и зайцев
Russian Federation has the 9 place in the world in the number of Chickens
Российская Федерация занимает 9 место в мире по количеству цыплят
Russian Federation has the 9 place in the world in the number of Horses
Российская Федерация занимает 9 место в мире по количеству лошадей
Russian Federation has the 10 place in the world in the number of Turkeys
Российская Федерация занимает 10 место в мире по количеству индеек
Russian Federation has the 16 place in the world in the number of Sheep
Российская Федерация занимает 16 место в мире по количеству овец
Russian Federation has the 18 place in the world in the number of Cattle
Российская Федерация занимает 18 место в мире по количеству крупного рогатого скота


---
Код скрипта:
из внешних библиотек надо установить pandas и googletrans:

pip install pandas
pip install googletrans

# -*- coding: utf-8 -*-

######

from zipfile import ZipFile
import io
from urllib.request import urlopen
import pandas as pd
from time import sleep
from googletrans import Translator
country = 'Russian Federation'
url = "http://fenixservices.fao.org/faostat/static/bulkdownloads/Production_Livestock_E_All_Data_(Normalized).zip"
print ('Качаем данные с сайта Продовольственной организации ООН (FAO)')
file = ZipFile(io.BytesIO(urlopen(url).read()))
type_dict = {'Area Code': 'int64', 'Area' : 'object', 'Item Code' : 'int64', 'Item' : 'object','Element Code' : 'int64',
            'Element' : 'object', 'Year Code' : 'int64', 'Year'  : 'int64', 'Unit' : 'object', 'Value' : 'float64',
            'Flag' : 'object', 'Note' : 'object'}
print ('Из скачанного архива берём файл Production_Livestock_E_All_Data_(Normalized).csv \nСоздаём структуру данных DataFrame')
df = pd.read_csv(file.open("Production_Livestock_E_All_Data_(Normalized).csv"), encoding='latin1', dtype=type_dict,
                  usecols=["Area Code", "Area", "Item Code", "Item", "Element", "Year", "Unit", "Value"])
max_year = df['Year'].max()
print ("Самый близкий доступный год:" + str(max_year))
df = df[df['Year'] == max_year]
df = df[df['Area Code'] < 5000] #убираем макрорегионы типа Африка, Европа. Нам нужны только страны.

# Убираем лишний Китай:
df = df[df['Area Code'] != 96] # 96 China, Hong Kong SAR
df = df[df['Area Code'] != 128] # 128 China, Macao SAR
df = df[df['Area Code'] != 41] # 41 China, mainland
df = df[df['Area Code'] != 214] # 214 China, Taiwan Province of

df = df[df['Item Code'] != 1746] #Убираем Cattle and Buffaloes (они есть по отдельности)
df = df[df['Item Code'] != 2029] #Убираем Poultry Birds (они есть по отдельности)

df_rank = df
df_rank['Rank'] = df_rank.groupby('Item')['Value'].rank(ascending=False)
df_rank = df_rank[df_rank['Area']==country]
df_rank = df_rank[['Item', 'Rank']]
df_rank = df_rank.sort_values(by=['Rank'])
rank_list = df_rank.values.tolist()
open('rank.txt', 'w').close()
for item in rank_list:
	try:
		mesto = int(item[1])
		if mesto <=20:
			line = country + ' has the ' + str(mesto) + ' place in the world in the number of ' + item[0]
			translator = Translator()
			line_russian = translator.translate(line, dest='ru').text
			combined_line = line + '\n' + line_russian
			print (combined_line)
			with open('rank.txt', 'a', encoding='utf8') as file:
				file.write(combined_line + '\n')
				sleep (1) #засыпаем на несколько секунд, чтобы гугл не забанил за множественные запросы.
	except:
		pass

Скачать этот скрипт в виде файла

https://yadi.sk/d/LPs0l3CCyZ7tPg

15 Комментариев
    • Капиталист
      09 июля 2020, 13:27
      Albus (Игорь Китаев), лахта внедряет новые технологии ))
      Занятная автоматизация, поиска хоть каких-то достижений путина ))
  • VladMih
    09 июля 2020, 10:49
    Игорь, это «абсолютные» цифры? Не на душу населения?
    Тогда эта стата ни о чём —
    можно быть на 1-м месте и всё съедать внутри.
    Еще и не всем хватит ))
      • dim800
        09 июля 2020, 15:21
        Albus (Игорь Китаев), то, что надо взять численность населения — это ты прав, но вот делить ее не на что не надо.

        «Власть у нас относится к своему населению, как к домашним животным» © Э.Лимонов.
  • Игрь
    09 июля 2020, 10:55
    Россия была бы на первом месте, если бы по доброте душевной не поддержала суверенитет Белоруссии, согласившись покупать у неё молочку, закрыв после этого свои фермы КРС. Если бы не поддержала другие мелкие страны бывшего СССР, которым нужна валюта, и которые готовы продавать нам по любым ценам. Нам, видимо, нужен их суверинитет (не знаю для чего), потому что если бы мы захотели чтобы они попросились обратно в состав России, то просто перестали бы у них покупать сырьё и с/х продукцию.
  • Мольберт Чебурага
    09 июля 2020, 10:57
    Российская Федерация занимает 16 место в мире по количеству овец
    Тут явная деза — должно быть первое место
    • Vad
      09 июля 2020, 11:00
      Мольберт Чебурага, у нас 1-е место по оленям)
    • Мальчик buybuy
      09 июля 2020, 11:30
      Albus (Игорь Китаев), о как!

      А как найти страну, которая занимает 1-е место по количеству ослов? Баранов?

      С уважением

      P.S. Или баран и овца — это монопенисуально?
  • u-gyn
    09 июля 2020, 12:38
    Животных в россии 76% от поговоловья
  • Григорий
    09 июля 2020, 13:10
    а гугл хуже переводит, чем яндекс
  • Котов в списке не увидел
  • Алексей Киров
    09 июля 2020, 18:53
    Учитывая, что Россия — 9-ая в мире по населению, все 9-ые места — означают среднее по миру место. 10-ое и ниже — что отстаём.

    Так что индейками, овцами и прочими рогатыми скотами надо не гордится, а недоумевать — «чо так мало-то?»

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн