рдкрд╛рдВрдбрд╛ рдореЗрдВ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓реЗрдВред рд╣рдо рдЕрдЬрдЧрд░ рдФрд░ 8GB рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ FIAS рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ FIAS рдЖрдзрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:



рдЖрдк рдЗрд╕реЗ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд░реВрд╕ рдореЗрдВ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкрддреЗ (рдкрддрд╛ рд░рдЬрд┐рд╕реНрдЯрд░) рд╣реИрдВред рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд░реБрдЪрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдЬреЛ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рд╡реЗ рдХрд╛рдлреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ 2.9 рдЬреАрдмреА рд╣реИред рдЗрд╕реЗ рд░реЛрдХрдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ 8 рдЬреАрдмреА рд░реИрдо рдХреЗ рд╕рд╛рде рдорд╢реАрди рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдкрд╛рдВрдбрд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдФрд░ рдпрджрд┐ рдЖрдк рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдВрдбреЛрдВ рдХреЛ рдЦрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рджрд┐рд▓ рдкрд░ рд╣рд╛рде рд░рдЦрдХрд░, рдореИрдВрдиреЗ рдХрднреА рдЗрд╕ рдЖрдзрд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрд╛рдзрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред

рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде fias_xml.rar рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрд╕рдХреА рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ - AS_ADDROBJ_20190915_9b13b2a6-b3bd-4866-bd1c-7ab966fafcf0.XMLред рдлрд╝рд╛рдЗрд▓ xml рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИред

рдкрд╛рдВрдбрд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ xml рдХреЛ рд╕реАрдПрд╕рд╡реА рдпрд╛ рдЬреЛрдВрд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рднреА рддреГрддреАрдп-рдкрдХреНрд╖ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдЕрдЬрдЧрд░ рдЦреБрдж рдХреЛ "рдореЗрдореЛрд░реАрд░рд░" рддреНрд░реБрдЯрд┐ рдпрд╛ рдлреНрд░реАрдЬ рдХрд░рдиреЗ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдореНрдоред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрд╛рдЯ рджреВрдВ рдФрд░ рдЗрд╕реЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рдмрджрд▓ рджреВрдВ? рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА "рдХрдЯрд░" рднреА рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрдореЛрд░реА рдФрд░ рд╣реИрдВрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдЬрдЧрд░ рдЦреБрдж рд╣реА, рдЬреЛ "рдХрдЯрд░" рдХреЗ рдорд╛рд░реНрдЧ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдХрд╛рдЯрддрд╛ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ 8 рдЬреАрдмреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ? рдЦреИрд░, рдЪрд▓рд┐рдП рджреЗрдЦрддреЗ рд╣реИрдВред

рд╡реЗрджрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо


рдЖрдкрдХреЛ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡реЗрджрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдкрдХреЛ 2.9 рдЬреАрдмреА xml рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдереЛрдбрд╝реА рддрд░рдХреАрдм рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЙрджреНрдШрд╛рдЯрди рдкрддрд╛ рдЯреИрдЧ рд╣реИ:



рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЗрд╕реЗ (рдЯреИрдЧ) рдмрдВрдж рдХрд░рдирд╛ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣реА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ xml рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:

<?xml version="1.0" encoding="utf-8"?><AddressObjects> 

рдФрд░ рдЕрдВрдд:

 </AddressObjects> 

рдЕрдм рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЛ рдХрд╛рдЯ рджреЗрдВ (рд╢реЗрд╖ рднрд╛рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд░рдг рд╕рдорд╛рди рд╣реИрдВ)ред

рд╡реЗрджрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ:



рдЗрд╕рдХреЗ рдмрд╛рдж, рдЧреЛрдЯреЛ рдФрд░ рд▓рд╛рдЗрди # рдЪреБрдиреЗрдВред рдЦреБрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ рд▓рд┐рдЦреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1,000,000:



рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдЪрдпрдирд┐рдд рдмреНрд▓реЙрдХ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕рдорд╛рдкрди рдЯреИрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗ:



рдпрд╣ рдареАрдХ рд╣реИ рдЕрдЧрд░ рдмрд╛рдж рдХреА рд╡рд╕реНрддреБ рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рдУрд╡рд░рд▓реИрдк рд╣реЛред

рдЕрдЧрд▓рд╛, vedit рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ, рдЪрдпрдирд┐рдд рдЯреБрдХрдбрд╝реЗ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ - рдлрд╝рд╛рдЗрд▓, рдЗрд╕ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред

рдЙрд╕реА рддрд░рд╣, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реЗрд╖ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЪрдпрди рдмреНрд▓реЙрдХ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ 1 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреЗ рдЕрдВрдд рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдирддреАрдЬрддрди, рдЖрдкрдХреЛ рд▓рдЧрднрдЧ 610 рдПрдордмреА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде 4 xml рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред

рд╣рдо xml рднрд╛рдЧреЛрдВ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрддреЗ рд╣реИрдВ


рдЕрдм рдЖрдкрдХреЛ рдирдИ рдмрдирд╛рдИ рдЧрдИ xml рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЯреИрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ xml рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝реЗрдВред

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ vedit рдореЗрдВ рдЦреЛрд▓реЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

 <?xml version="1.0" encoding="utf-8"?><AddressObjects> 

рдФрд░ рдЕрдВрдд рдореЗрдВ:

 </AddressObjects> 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд╛рдЬрди рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ 4 xml рднрд╛рдЧ рд╣реИрдВред

Xml рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реАрдПрд╕рд╡реА


рдЕрдм python рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдХрд░ csml рдХреЛ csv рдкрд░ рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯ рдХрд░реЗрдВред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдб

рдпрд╣рд╛рдВ
 # -*- coding: utf-8 -*- from __future__ import unicode_literals import codecs,os import xml.etree.ElementTree as ET import csv from datetime import datetime parser = ET.XMLParser(encoding="utf-8") tree = ET.parse("add-30-40.xml",parser=parser) root = tree.getroot() Resident_data = open('fias-30-40.csv', 'w',encoding='UTF8') csvwriter = csv.writer(Resident_data) start = datetime.now() for member in root.findall('Object'): object = [] object.append(member.attrib['AOID']) object.append(member.attrib['AOGUID']) try: object.append(member.attrib['PARENTGUID']) except: object.append(None) try: object.append(member.attrib['PREVID']) except: object.append(None) #try: # object.append(member.attrib['NEXTID']) #except: # object.append(None) object.append(member.attrib['FORMALNAME']) object.append(member.attrib['OFFNAME']) object.append(member.attrib['SHORTNAME']) object.append(member.attrib['AOLEVEL']) object.append(member.attrib['REGIONCODE']) object.append(member.attrib['AREACODE']) object.append(member.attrib['AUTOCODE']) object.append(member.attrib['CITYCODE']) object.append(member.attrib['CTARCODE']) object.append(member.attrib['PLACECODE']) object.append(member.attrib['STREETCODE']) object.append(member.attrib['EXTRCODE']) object.append(member.attrib['SEXTCODE']) try: object.append(member.attrib['PLAINCODE']) except: object.append(None) try: object.append(member.attrib['CODE']) except: object.append(None) object.append(member.attrib['CURRSTATUS']) object.append(member.attrib['ACTSTATUS']) object.append(member.attrib['LIVESTATUS']) object.append(member.attrib['CENTSTATUS']) object.append(member.attrib['OPERSTATUS']) try: object.append(member.attrib['IFNSFL']) except: object.append(None) try: object.append(member.attrib['IFNSUL']) except: object.append(None) try: object.append(member.attrib['OKATO']) except: object.append(None) try: object.append(member.attrib['OKTMO']) except: object.append(None) try: object.append(member.attrib['POSTALCODE']) except: object.append(None) #print(len(object)) csvwriter.writerow(object) Resident_data.close() print(datetime.now()- start) #0:00:21.122437 

ред
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдкрдХреЛ рд╕рднреА 4 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реАрдПрд╕рд╡реА рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдкреНрд░рддреНрдпреЗрдХ 236 рдПрдордмреА (xml рдореЗрдВ 610 рдПрдордмреА рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛) рд╣реЛрдЧрд╛ред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЕрдм рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХреНрд╕реЗрд▓ рдпрд╛ рдиреЛрдЯрдкреИрдб ++ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрднреА рднреА рдПрдХ рдХреЗ рдмрдЬрд╛рдп 4 рд╣реИрдВ, рдФрд░ рд╣рдо рд▓рдХреНрд╖реНрдп рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ - рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рдВрдбрд╛ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдПрдХ рдореЗрдВ рдЧреЛрдВрдж рдлрд╝рд╛рдЗрд▓реЗрдВ


рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдпрд╣ рдПрдХ рдХрдард┐рди рдХрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрдВрд╕реЛрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ csvkit рдирд╛рдордХ рдЕрдЬрдЧрд░ рдореЗрдВ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдЕрдЬрдЧрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд:

 pip install csvkit 

* рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдВ рд╕реЗ рдПрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЧреНрд▓реВрдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рдЧреНрд▓реВрдЗрдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдмрд┐рдирд╛ рд╣реЗрдбрд░ рдХреЗ рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рд╣рдо рдЧреНрд▓реВрдЗрдВрдЧ: a, b, c, рдЖрджрд┐

 csvstack -H fias-0-10.csv fias-10-20.csv fias-20-30.csv fias-30-40.csv > joined2.csv 

рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╕рдорд╛рдкреНрдд рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓ рд╣реИред

рд╕реНрдореГрддрд┐ рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдВрдбрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ


рдпрджрд┐ рдЖрдк рддреБрд░рдВрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рдВрдбрд╛ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ

 import pandas as pd import numpy as np gl = pd.read_csv('joined2.csv',encoding='ANSI',index_col='a') print (gl.info(memory_usage='deep')) #   def mem_usage(pandas_obj): if isinstance(pandas_obj,pd.DataFrame): usage_b = pandas_obj.memory_usage(deep=True).sum() else: # ,     ,   usage_b = pandas_obj.memory_usage(deep=True) usage_mb = usage_b / 1024 ** 2 #     return "{:03.2f} " .format(usage_mb) 

рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдпрд╣ рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рд▓реЗрдЧрд╛, рдкрд░рд┐рдгрд╛рдо рдЕрдкреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:



3 рдЬреАрдмреА! рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдбреЗрдЯрд╛ рдкрдврд╝рддреЗ рд╕рдордп, рдкрд╣рд▓рд╛ рдХреЙрд▓рдо "рдЗрдВрдбреЗрдХреНрд╕ рдХреЙрд▓рдо" рдХреЗ рд░реВрдк рдореЗрдВ "рдЪрд▓рд╛ рдЧрдпрд╛", рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡реЙрд▓реНрдпреВрдо рдФрд░ рднреА рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ред
* рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрд╛рдВрдбрд╛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдХреЙрд▓рдо рдЗрдВрдбреЗрдХреНрд╕ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рд╣рдо рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рдФрд░ рд▓реЗрдЦ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдВрдЧреЗ:
- рд╢реНрд░реЗрдгреА рдореЗрдВ рд╡рд╕реНрддреБ;
- рдпреВрдЖрдИрдЯреА 8 рдореЗрдВ рдЗрдВрдЯ 64;
- рдлреНрд▓реЛрдЯ 32 рдореЗрдВ рдлреНрд▓реЛрдЯ64ред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп, dtypes рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдХреЛрдб рдореЗрдВ рдХреЙрд▓рдо рдкрдврд╝рдиреЗ рд╕реЗ рдРрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:

 gl = pd.read_csv('joined2.csv',encoding='ANSI',index_col='a', dtype ={ 'b':'category', 'c':'category','d':'category','e':'category', 'f':'category','g':'category', 'h':'uint8','i':'uint8','j':'uint8', 'k':'uint8','l':'uint8','m':'uint8','n':'uint16', 'o':'uint8','p':'uint8','q':'uint8','t':'uint8', 'u':'uint8','v':'uint8','w':'uint8','x':'uint8', 'r':'float32','s':'float32', 'y':'float32','z':'float32','aa':'float32','bb':'float32', 'cc':'float32' }) 

рдЕрдм, рдкрд╛рдВрдбрд╛ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рд╕реЗ, рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреБрджреНрдзрд┐рдорд╛рди рд╣реЛрдЧрд╛:



рдпрд╣ csv рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдкрдВрдХреНрддрд┐-рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрддрдВрдн рдирд╛рдо рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ:

 AOID,AOGUID,PARENTGUID,PREVID,FORMALNAME,OFFNAME,SHORTNAME,AOLEVEL,REGIONCODE,AREACODE,AUTOCODE,CITYCODE,CTARCODE,PLACECODE,STREETCODE,EXTRCODE,SEXTCODE,PLAINCODE,CODE,CURRSTATUS,ACTSTATUS,LIVESTATUS,CENTSTATUS,OPERSTATUS,IFNSFL,IFNSUL,OKATO,OKTMO,POSTALCODE 

* рдЖрдк рдЗрд╕ рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рдирд╛рдореЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рдХреЛрдб рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрд╛рдВрдбрд╛ рд╕реЗ рд╕рд╣реЗрдЬреЗрдВ

 gl.head().to_csv('out.csv', encoding='ANSI',index_label='a') 

рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ:



рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдЙрджреНрдШрд╛рдЯрди рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб:

рдХреЛрдб
 import os import time import pandas as pd import numpy as np #     :  object-category, float64-float32, int64-int gl = pd.read_csv('joined2.csv',encoding='ANSI',index_col='a', dtype ={ 'b':'category', 'c':'category','d':'category','e':'category', 'f':'category','g':'category', 'h':'uint8','i':'uint8','j':'uint8', 'k':'uint8','l':'uint8','m':'uint8','n':'uint16', 'o':'uint8','p':'uint8','q':'uint8','t':'uint8', 'u':'uint8','v':'uint8','w':'uint8','x':'uint8', 'r':'float32','s':'float32', 'y':'float32','z':'float32','aa':'float32','bb':'float32', 'cc':'float32' }) pd.set_option('display.notebook_repr_html', False) pd.set_option('display.max_columns', 8) pd.set_option('display.max_rows', 10) pd.set_option('display.width', 80) #print (gl.head()) print (gl.info(memory_usage='deep')) #   def mem_usage(pandas_obj): if isinstance(pandas_obj,pd.DataFrame): usage_b = pandas_obj.memory_usage(deep=True).sum() else: # ,     ,   usage_b = pandas_obj.memory_usage(deep=True) usage_mb = usage_b / 1024 ** 2 #     return "{:03.2f} " .format(usage_mb) 


рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рд╣рдо рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:

 gl.shape 

 (3348644, 28) 

3.3 рдорд┐рд▓рд┐рдпрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ, 28 рдХреЙрд▓рдоред

рдиреАрдЪреЗ рдкрдВрдХреНрддрд┐: 890 рдПрдордмреА рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реАрдПрд╕рд╡реА рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде, рдкрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП "рдЕрдиреБрдХреВрд▓рд┐рдд", рдпрд╣ рд╕реНрдореГрддрд┐ рдореЗрдВ 1.2 рдЬреАрдмреА рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рди рдХрд┐рд╕реА рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдХрд╛рд░ рдореЗрдВ 7.69 рдЬреАрдмреА рдХреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрдВрдбреЛрдВ рдореЗрдВ рдЦреЛрд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ "рдЕрдиреБрдХреВрд▓рд┐рдд" рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

Source: https://habr.com/ru/post/hi468637/


All Articles