рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ (рдирд┐рдмрдВрдз) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкрд╛рдВрдбрд╛ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ

рдЬрдм рд╡реИрдЧрдиреЛрдВ рдФрд░ / рдпрд╛ рдПрдХ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреА рд╕реНрдореГрддрд┐ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рдВрдбрд╛ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдбреЗрдЯрд╛ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПред

рдпрд╣ рд▓рдШреБ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ рддрд╛рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рд╡рд┐рд╢рд╛рд▓ рдбреЗрдЯрд╛рд╕реЗрдЯ рди рдЦреАрдВрдЪ рд╕рдХреЗрдВред

рдПрдХ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо 2019 рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде habrastatistics рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдПрдХ рдореЗрд╣рдирддреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ:
рдбрд╛рдЯрд╛рд╕реЗрдЯ

рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣реИрдмрд░ рдХреЗ рдкрд╣рд▓реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рд▓реЗрдЦ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрддреА рд╣реИрдВред

рдЬреНрд╡рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп


Habrastatistics рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдЫреЛрдЯрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ 288 MB рдкрд░ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ 448,533 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред
рдмреЗрд╢рдХ, рдЖрдк рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╛рд░ рдХреЛ рд▓рдЯрдХрд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЙрд▓рдо рдирд╛рдореЛрдВ рдореЗрдВ (рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗрдВ) рдЬреЛрдбрд╝реЗрдВрдЧреЗ:

a,b,c,d 

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

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

рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд╣ "436.1 рдПрдордмреА" рдЦрд╛рддрд╛ рд╣реИ:

 RangeIndex: 448533 entries, 0 to 448532 Data columns (total 4 columns): a 448533 non-null object b 448533 non-null object c 448533 non-null object d 448528 non-null object dtypes: object(4) memory usage: 436.1 MB 

рдпрд╣ рдпрд╣ рднреА рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрди рд╕реНрддрдВрднреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдбреЗрдЯрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд▓реЗрдЦ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХреА рдЧрдИ рдЕрдиреБрдХреВрд▓рди рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд╕реНрддрдВрднреЛрдВ рдХреЗ рд▓рд┐рдПред

рдХреЙрд▓рдо рдмреА рдореЗрдВ рддрд┐рдерд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдЖрдЧреЗ рдХреА рдЧрдгрдирд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рднреЗрдЬрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрдврд╝рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдмрджрд▓реЗрдВ:

 gl = pd.read_csv('habr_2019_comments.csv', parse_dates=['b'], encoding='UTF') 

рдЕрдм рджрд┐рдирд╛рдВрдХ рдХреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдЦрдкрдд рдереЛрдбрд╝реА рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ:

 memory usage: 407.0 MB 

рдЕрдм рд╣рдо рдХреЙрд▓рдо рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рд╣реА рдбреЗрдЯрд╛ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ


рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: "рд╢реНрд░реЗрдгреАрдмрджреНрдз рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рднрдВрдбрд╛рд░рдг рдХрд╛ рдЕрдиреБрдХреВрд▓рди"ред

рдпрджрд┐ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╢реНрд░реЗрдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЙрд▓рдо рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд╣реИред

рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрддрдВрднреЛрдВ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдпрд╣ рд╕реНрддрдВрдн рдХреЗ рдорд╛рдиреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ 50% рд╕реЗ рдХрдо рд╣реИ, рддреЛ рд╢реНрд░реЗрдгреА рдореЗрдВ рдорд╛рдиреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдкреНрд░рднрд╛рд╡реА рд╣реЛрдЧрд╛ред

рдЖрдЗрдП рдбреЗрдЯрд╛рд╕реЗрдЯ рджреЗрдЦреЗрдВ:

 gl_obj=gl.select_dtypes(include=['object']).copy() gl_obj.describe() 
:
  acd count 448533 448533 448528 unique 25100 185 447059 top VolCh 0 ! freq 3377 260438 184 

* рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрджреНрд╡рд┐рддреАрдп рдкрдВрдХреНрддрд┐ рд╕реЗ, рдХреЙрд▓рдо рдП рдФрд░ рд╕реА рдореЗрдВ, рд╢реНрд░реЗрдгреА рдореЗрдВ рд╕рдВрдШ рдкреНрд░рднрд╛рд╡реА рд╣реИред рдХреЙрд▓рдо a рдХреЗ рд▓рд┐рдП, рдпрд╣ 25100 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдЬрд╛рд╣рд┐рд░ рд╣реИ 448533 рд╕реЗ рдХрдо) рд╣реИ, рд╕реА рдХреЗ рд▓рд┐рдП - "+" рдФрд░ "-" рдХреЗ рд╕рд╛рде рдкреИрдорд╛рдиреЗ рдХреЗ 185 рдорд╛рди (448533 рд╕реЗ рднреА рдХрдо)ред

рд╣рдо рдХреЙрд▓рдо рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВ:

 for col in gl_obj.columns: num_unique_values = len(gl_obj[col].unique()) num_total_values = len(gl_obj[col]) if num_unique_values / num_total_values < 0.5: converted_obj.loc[:,col] = gl_obj[col].astype('category') else: converted_obj.loc[:,col] = gl_obj[col] 

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдПрдХ рдлрдВрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

 def mem_usage(pandas_obj): if isinstance(pandas_obj,pd.DataFrame): usage_b = pandas_obj.memory_usage(deep=True).sum() else: #     ,     DataFrame,   Series usage_b = pandas_obj.memory_usage(deep=True) usage_mb = usage_b / 1024 ** 2 #     return "{:03.2f} MB".format(usage_mb) 

рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреБрдХреВрд▓рди рдкреНрд░рднрд╛рд╡реА рдерд╛:

 >>> print('  : '+mem_usage(gl_obj))   : 407.14 MB >>> print('  : '+mem_usage(converted_obj))   : 356.40 MB >>> 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдФрд░ 50 рдПрдордмреА рдХрд╛ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред

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

 gl = pd.read_csv('habr_2019_comments.csv', parse_dates=['b'],index_col='b',dtype ={'c':'category','a':'category','d':'object'}, encoding='UTF') 

рд╣рдо рдЖрдкрдХреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ!

рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ ред

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


All Articles