Can you tell me when to use these vectorization methods with basic examples?
I see that map is a Series method whereas the rest are
First major difference: DEFINITION
map is defined on Series ONLYapplymap is defined on DataFrames ONLYapply is defined on BOTHSecond major difference: INPUT ARGUMENT
map accepts dicts, Series, or callableapplymap and apply accept callables onlyThird major difference: BEHAVIOR
map is elementwise for Seriesapplymap is elementwise for DataFramesapply also works elementwise but is suited to more complex operations and aggregation. The behaviour and return value depends on the function.Fourth major difference (the most important one): USE CASE
map is meant for mapping values from one domain to another, so is optimised for performance (e.g., df['A'].map({1:'a', 2:'b', 3:'c'}))applymap is good for elementwise transformations across multiple rows/columns (e.g., df[['A', 'B', 'C']].applymap(str.strip))apply is for applying any function that cannot be vectorised (e.g., df['sentences'].apply(nltk.sent_tokenize))Footnotes
mapwhen passed a dictionary/Series will map elements based on the keys in that dictionary/Series. Missing values will be recorded as NaN in the output.
applymapin more recent versions has been optimised for some operations. You will findapplymapslightly faster thanapplyin some cases. My suggestion is to test them both and use whatever works better.
mapis optimised for elementwise mappings and transformation. Operations that involve dictionaries or Series will enable pandas to use faster code paths for better performance.Series.applyreturns a scalar for aggregating operations, Series otherwise. Similarly forDataFrame.apply. Note thatapplyalso has fastpaths when called with certain NumPy functions such asmean,sum, etc.