рдореИрдВрдиреЗ рдлрд╝рдВрдХреНрд╢рди df.iterrows()
рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рднрдпрд╛рдирдХ рд╣реИред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ iterrows()
Series
рдкреВрд░реНрдг
рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдЬреЛ рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд╡рд╣ for row in df.values
, рдЬреЛ рдХрд┐ рдХрд╛рдлреА рддреЗрдЬ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ df.values
DataFrame рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ df.values
рд╕рднреА dtypes
рдХреЛ рдПрдХ рдЖрдо dtype
рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдПрдХ рдХреЙрд▓рдо рдореЗрдВ int64
рдХрд╛ dtype рд╣реИ рд▓реЗрдХрд┐рди df.values
рдХрд╛ dtype рд╕рднреА float64
ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ df.values
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ рдХреА рдПрдХ рдФрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрдВрдХреНрддрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЙрди рдорд╛рдиреЛрдВ рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рдП, рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рдореВрд▓ dtype
рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЕрдЬрдЧрд░ рдореЗрдВ, рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИ (рдмрд╣реБрдд) рд╕рджрд┐рд╢ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореАред
рдЖрдкрдХреЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЦрд╕реНрддрд╛ рд╕рд░рдгрд┐рдпреЛрдВ рд╣реИ (рдЬреЛ рдХрд┐ df.values
рд╣реИ) рдХрд╛рдо рд╣реИред DataFrames рд╕реНрддрдВрдн рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ dtypes рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХрд▓ DataFrame рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдкрдВрдХреНрддрд┐-рд╡рд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рд░ рдЪреАрдЬ рдХреЛ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рд░рдЦрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рд╕рдм рдХреБрдЫ рд░рдЦрддреА рд╣реИред рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪреАрдВрдЯрд┐рдпрд╛рдБ float64
ред
рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрдо рд╕реЗ рдХрдо рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдкрд╛рдВрдбрд╛ рдЯреИрдЧ рдХреЗ рд╕рд╛рде StackOverflow рдкрд░ рдХрд┐рд╕реНрдордд рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдореВрд▓ рд░реВрдк рд╕реЗ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
row_handler = RowHandler(sample_df) # learn how to handle row from sample data
transformed_data = []
for row in df.values:
transformed_data.append(row_handler.handle(row))
return transformed_data
рдореИрдВ RowHandler
рд╡рд░реНрдЧ рдХрд╛ рдорд╛рд▓рд┐рдХ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрдВрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкрдВрдХреНрддрд┐ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдПрдХ рдЕрдиреНрдп рд╕рдорд╛рди рдЙрджрд╛рд╣рд░рдг рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЗрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдкрдВрдХреНрддрд┐ рд╕реНрддрд░ рдкрд░ рдПрдкреАрдЖрдИ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдЧрдИ рд╣реИред
рдлрд┐рд░ рднреА рдереЛрдбрд╝рд╛ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ RowHandler
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ рддреЛ рдЖрдк рднрд╛рдЧреНрдп рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рдХреЗ рд╕рднреА рдПрдкреАрдЖрдИ рд╕рд░рдгрд┐рдпреЛрдВ (рдЗрд╕рд▓рд┐рдП рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ) рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╕рд╛рдл рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рдВ, RowHandler
рдореЗрд░реЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рднрд╛рдЧреНрдп рд╕реЗ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ dtype
рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддреЗ рд╣реБрдП рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреЗ рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рддрд░реАрдХреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдХреНрдпрд╛ рдЖрдк df.iterrows()
, рдпрд╛ рдХреБрдЫ рдФрд░ рд╕реБрдЭрд╛ рд░рд╣реЗ рд╣реИрдВ?
sklearn
рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИ, рдЖрджрд░реНрд╢ рдирд╣реАрдВ, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ PD рдХреЗ DataFrame
рдкрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдмрд╣реБрдд рд╕реЗ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ API рдирд╣реАрдВ рд╣реИ рдЬреЛ DataFrame
рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ df.itertuples()
рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдк рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ - рдпрд╣ рдЗрдЯреНрд░реЛрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рд╣реИ:
In [10]: x = pd.DataFrame({'x': range(10000)})
In [11]: %timeit list(x.iterrows())
1 loops, best of 3: 383 ms per loop
In [12]: %timeit list(x.itertuples())
1000 loops, best of 3: 1.39 ms per loop
рдзрдиреНрдпрд╡рд╛рдж @shoyer! рдореБрдЭреЗ рдЗрд╕реА рдХреА рдЬрд░реВрд░рдд рдереАред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐
df.itertuples()
рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдк рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ - рдпрд╣ рдЗрдЯреНрд░реЛрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рд╣реИ: