рдЬрдм рд╡реИрдЧрдиреЛрдВ рдФрд░ / рдпрд╛ рдПрдХ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреА рд╕реНрдореГрддрд┐ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рдВрдбрд╛ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдбреЗрдЯрд╛ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПред
рдпрд╣ рд▓рдШреБ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ рддрд╛рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рд╡рд┐рд╢рд╛рд▓ рдбреЗрдЯрд╛рд╕реЗрдЯ рди рдЦреАрдВрдЪ рд╕рдХреЗрдВред
рдПрдХ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо 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:
рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд╣ "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:
рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреБрдХреВрд▓рди рдкреНрд░рднрд╛рд╡реА рдерд╛:
>>> 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')
рд╣рдо рдЖрдкрдХреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ!
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдб
рдпрд╣рд╛рдБ рд╣реИ ред