{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Pandas\n", "This is a sample notebook for pandas, an extremely powerful python module that allows for data I/O, plotting, and general data analysis" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# As usual, first we import different packages:\n", "# - matplotlib to plot things\n", "# - numpy for numerical operations\n", "# - pandas" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# 1. In this first example we create what is known as a pandas \"data frame\"\n", "# This is a way to organize data that is tabular in nature, i.e., rows \n", "# and columns.\n", "#\n", "# The syntax is ({ xxx }) where xxx contains the list (not in the python\n", "# sense) of data. Each entry can be thought of as a row by column table.\n", "# the first row, or column headings, are listed first, then a colon (:),\n", "# then the row values in each column are listed between []'s. The first\n", "# column is always an index.\n", "# The example below lists a table of people, their children and pets." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame({\n", " 'name':['john','mary','peter','jeff','bill','lisa','jose'],\n", " 'age':[23,78,22,19,45,33,20],\n", " 'gender':['M','F','M','M','M','F','M'],\n", " 'state':['california','dc','california','dc','california','texas','texas'],\n", " 'num_children':[2,0,0,3,2,1,4],\n", " 'num_pets':[5,1,0,5,2,2,3]\n", "})" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# To print out this data frame, just enter the DataFrame name" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nameagegenderstatenum_childrennum_pets
0john23Mcalifornia25
1mary78Fdc01
2peter22Mcalifornia00
3jeff19Mdc35
4bill45Mcalifornia22
5lisa33Ftexas12
6jose20Mtexas43
\n", "
" ], "text/plain": [ " name age gender state num_children num_pets\n", "0 john 23 M california 2 5\n", "1 mary 78 F dc 0 1\n", "2 peter 22 M california 0 0\n", "3 jeff 19 M dc 3 5\n", "4 bill 45 M california 2 2\n", "5 lisa 33 F texas 1 2\n", "6 jose 20 M texas 4 3" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Alternately, specify certain columns by givin their name" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pandas.core.frame.DataFrame" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(df)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
statename
0californiajohn
1dcmary
2californiapeter
3dcjeff
4californiabill
5texaslisa
6texasjose
\n", "
" ], "text/plain": [ " state name\n", "0 california john\n", "1 dc mary\n", "2 california peter\n", "3 dc jeff\n", "4 california bill\n", "5 texas lisa\n", "6 texas jose" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[['state', 'name']]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# It's a little more tricky to display certain rows; for\n", "# this use the \"iloc\" method, e.g., to display the third\n", "# row fifth column (NOTE: python starts counting at 0,\n", "# and the first column is an index not technically part\n", "# of the DataFrame for these purposes)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[3,5]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# search a column for a value, print out that row" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nameagegenderstatenum_childrennum_pets
0john23Mcalifornia25
2peter22Mcalifornia00
4bill45Mcalifornia22
\n", "
" ], "text/plain": [ " name age gender state num_children num_pets\n", "0 john 23 M california 2 5\n", "2 peter 22 M california 0 0\n", "4 bill 45 M california 2 2" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[df['state']=='california']" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['T',\n", " '_AXIS_LEN',\n", " '_AXIS_ORDERS',\n", " '_AXIS_REVERSED',\n", " '_AXIS_TO_AXIS_NUMBER',\n", " '_HANDLED_TYPES',\n", " '__abs__',\n", " '__add__',\n", " '__and__',\n", " '__annotations__',\n", " '__array__',\n", " '__array_priority__',\n", " '__array_ufunc__',\n", " '__array_wrap__',\n", " '__bool__',\n", " '__class__',\n", " '__contains__',\n", " '__copy__',\n", " '__deepcopy__',\n", " '__delattr__',\n", " '__delitem__',\n", " '__dict__',\n", " '__dir__',\n", " '__divmod__',\n", " '__doc__',\n", " '__eq__',\n", " '__finalize__',\n", " '__floordiv__',\n", " '__format__',\n", " '__ge__',\n", " '__getattr__',\n", " '__getattribute__',\n", " '__getitem__',\n", " '__getstate__',\n", " '__gt__',\n", " '__hash__',\n", " '__iadd__',\n", " '__iand__',\n", " '__ifloordiv__',\n", " '__imod__',\n", " '__imul__',\n", " '__init__',\n", " '__init_subclass__',\n", " '__invert__',\n", " '__ior__',\n", " '__ipow__',\n", " '__isub__',\n", " '__iter__',\n", " '__itruediv__',\n", " '__ixor__',\n", " '__le__',\n", " '__len__',\n", " '__lt__',\n", " '__matmul__',\n", " '__mod__',\n", " '__module__',\n", " '__mul__',\n", " '__ne__',\n", " '__neg__',\n", " '__new__',\n", " '__nonzero__',\n", " '__or__',\n", " '__pos__',\n", " '__pow__',\n", " '__radd__',\n", " '__rand__',\n", " '__rdivmod__',\n", " '__reduce__',\n", " '__reduce_ex__',\n", " '__repr__',\n", " '__rfloordiv__',\n", " '__rmatmul__',\n", " '__rmod__',\n", " '__rmul__',\n", " '__ror__',\n", " '__round__',\n", " '__rpow__',\n", " '__rsub__',\n", " '__rtruediv__',\n", " '__rxor__',\n", " '__setattr__',\n", " '__setitem__',\n", " '__setstate__',\n", " '__sizeof__',\n", " '__str__',\n", " '__sub__',\n", " '__subclasshook__',\n", " '__truediv__',\n", " '__weakref__',\n", " '__xor__',\n", " '_accessors',\n", " '_accum_func',\n", " '_add_numeric_operations',\n", " '_agg_by_level',\n", " '_agg_examples_doc',\n", " '_agg_summary_and_see_also_doc',\n", " '_align_frame',\n", " '_align_series',\n", " '_arith_method',\n", " '_as_manager',\n", " '_attrs',\n", " '_box_col_values',\n", " '_can_fast_transpose',\n", " '_check_inplace_and_allows_duplicate_labels',\n", " '_check_inplace_setting',\n", " '_check_is_chained_assignment_possible',\n", " '_check_label_or_level_ambiguity',\n", " '_check_setitem_copy',\n", " '_clear_item_cache',\n", " '_clip_with_one_bound',\n", " '_clip_with_scalar',\n", " '_cmp_method',\n", " '_combine_frame',\n", " '_consolidate',\n", " '_consolidate_inplace',\n", " '_construct_axes_dict',\n", " '_construct_axes_from_arguments',\n", " '_construct_result',\n", " '_constructor',\n", " '_constructor_sliced',\n", " '_convert',\n", " '_count_level',\n", " '_data',\n", " '_dir_additions',\n", " '_dir_deletions',\n", " '_dispatch_frame_op',\n", " '_drop_axis',\n", " '_drop_labels_or_levels',\n", " '_ensure_valid_index',\n", " '_find_valid_index',\n", " '_flags',\n", " '_from_arrays',\n", " '_from_mgr',\n", " '_get_agg_axis',\n", " '_get_axis',\n", " '_get_axis_name',\n", " '_get_axis_number',\n", " '_get_axis_resolvers',\n", " '_get_block_manager_axis',\n", " '_get_bool_data',\n", " '_get_cleaned_column_resolvers',\n", " '_get_column_array',\n", " '_get_index_resolvers',\n", " '_get_item_cache',\n", " '_get_label_or_level_values',\n", " '_get_numeric_data',\n", " '_get_value',\n", " '_getitem_bool_array',\n", " '_getitem_multilevel',\n", " '_gotitem',\n", " '_hidden_attrs',\n", " '_indexed_same',\n", " '_info_axis',\n", " '_info_axis_name',\n", " '_info_axis_number',\n", " '_info_repr',\n", " '_init_mgr',\n", " '_inplace_method',\n", " '_internal_names',\n", " '_internal_names_set',\n", " '_is_copy',\n", " '_is_homogeneous_type',\n", " '_is_label_or_level_reference',\n", " '_is_label_reference',\n", " '_is_level_reference',\n", " '_is_mixed_type',\n", " '_is_view',\n", " '_iset_item',\n", " '_iset_item_mgr',\n", " '_iset_not_inplace',\n", " '_item_cache',\n", " '_iter_column_arrays',\n", " '_ixs',\n", " '_join_compat',\n", " '_logical_func',\n", " '_logical_method',\n", " '_maybe_cache_changed',\n", " '_maybe_update_cacher',\n", " '_metadata',\n", " '_mgr',\n", " '_min_count_stat_function',\n", " '_needs_reindex_multi',\n", " '_protect_consolidate',\n", " '_reduce',\n", " '_reindex_axes',\n", " '_reindex_columns',\n", " '_reindex_index',\n", " '_reindex_multi',\n", " '_reindex_with_indexers',\n", " '_replace_columnwise',\n", " '_repr_data_resource_',\n", " '_repr_fits_horizontal_',\n", " '_repr_fits_vertical_',\n", " '_repr_html_',\n", " '_repr_latex_',\n", " '_reset_cache',\n", " '_reset_cacher',\n", " '_sanitize_column',\n", " '_series',\n", " '_set_axis',\n", " '_set_axis_name',\n", " '_set_axis_nocheck',\n", " '_set_is_copy',\n", " '_set_item',\n", " '_set_item_frame_value',\n", " '_set_item_mgr',\n", " '_set_value',\n", " '_setitem_array',\n", " '_setitem_frame',\n", " '_setitem_slice',\n", " '_slice',\n", " '_stat_axis',\n", " '_stat_axis_name',\n", " '_stat_axis_number',\n", " '_stat_function',\n", " '_stat_function_ddof',\n", " '_take_with_is_copy',\n", " '_to_dict_of_blocks',\n", " '_typ',\n", " '_update_inplace',\n", " '_validate_dtype',\n", " '_values',\n", " '_where',\n", " 'abs',\n", " 'add',\n", " 'add_prefix',\n", " 'add_suffix',\n", " 'age',\n", " 'agg',\n", " 'aggregate',\n", " 'align',\n", " 'all',\n", " 'any',\n", " 'append',\n", " 'apply',\n", " 'applymap',\n", " 'asfreq',\n", " 'asof',\n", " 'assign',\n", " 'astype',\n", " 'at',\n", " 'at_time',\n", " 'attrs',\n", " 'axes',\n", " 'backfill',\n", " 'between_time',\n", " 'bfill',\n", " 'bool',\n", " 'boxplot',\n", " 'clip',\n", " 'columns',\n", " 'combine',\n", " 'combine_first',\n", " 'compare',\n", " 'convert_dtypes',\n", " 'copy',\n", " 'corr',\n", " 'corrwith',\n", " 'count',\n", " 'cov',\n", " 'cummax',\n", " 'cummin',\n", " 'cumprod',\n", " 'cumsum',\n", " 'describe',\n", " 'diff',\n", " 'div',\n", " 'divide',\n", " 'dot',\n", " 'drop',\n", " 'drop_duplicates',\n", " 'droplevel',\n", " 'dropna',\n", " 'dtypes',\n", " 'duplicated',\n", " 'empty',\n", " 'eq',\n", " 'equals',\n", " 'eval',\n", " 'ewm',\n", " 'expanding',\n", " 'explode',\n", " 'ffill',\n", " 'fillna',\n", " 'filter',\n", " 'first',\n", " 'first_valid_index',\n", " 'flags',\n", " 'floordiv',\n", " 'from_dict',\n", " 'from_records',\n", " 'ge',\n", " 'gender',\n", " 'get',\n", " 'groupby',\n", " 'gt',\n", " 'head',\n", " 'hist',\n", " 'iat',\n", " 'idxmax',\n", " 'idxmin',\n", " 'iloc',\n", " 'index',\n", " 'infer_objects',\n", " 'info',\n", " 'insert',\n", " 'interpolate',\n", " 'isin',\n", " 'isna',\n", " 'isnull',\n", " 'items',\n", " 'iteritems',\n", " 'iterrows',\n", " 'itertuples',\n", " 'join',\n", " 'keys',\n", " 'kurt',\n", " 'kurtosis',\n", " 'last',\n", " 'last_valid_index',\n", " 'le',\n", " 'loc',\n", " 'lookup',\n", " 'lt',\n", " 'mad',\n", " 'mask',\n", " 'max',\n", " 'mean',\n", " 'median',\n", " 'melt',\n", " 'memory_usage',\n", " 'merge',\n", " 'min',\n", " 'mod',\n", " 'mode',\n", " 'mul',\n", " 'multiply',\n", " 'name',\n", " 'ndim',\n", " 'ne',\n", " 'nlargest',\n", " 'notna',\n", " 'notnull',\n", " 'nsmallest',\n", " 'num_children',\n", " 'num_pets',\n", " 'nunique',\n", " 'pad',\n", " 'pct_change',\n", " 'pipe',\n", " 'pivot',\n", " 'pivot_table',\n", " 'plot',\n", " 'pop',\n", " 'pow',\n", " 'prod',\n", " 'product',\n", " 'quantile',\n", " 'query',\n", " 'radd',\n", " 'rank',\n", " 'rdiv',\n", " 'reindex',\n", " 'reindex_like',\n", " 'rename',\n", " 'rename_axis',\n", " 'reorder_levels',\n", " 'replace',\n", " 'resample',\n", " 'reset_index',\n", " 'rfloordiv',\n", " 'rmod',\n", " 'rmul',\n", " 'rolling',\n", " 'round',\n", " 'rpow',\n", " 'rsub',\n", " 'rtruediv',\n", " 'sample',\n", " 'select_dtypes',\n", " 'sem',\n", " 'set_axis',\n", " 'set_flags',\n", " 'set_index',\n", " 'shape',\n", " 'shift',\n", " 'size',\n", " 'skew',\n", " 'slice_shift',\n", " 'sort_index',\n", " 'sort_values',\n", " 'squeeze',\n", " 'stack',\n", " 'state',\n", " 'std',\n", " 'style',\n", " 'sub',\n", " 'subtract',\n", " 'sum',\n", " 'swapaxes',\n", " 'swaplevel',\n", " 'tail',\n", " 'take',\n", " 'to_clipboard',\n", " 'to_csv',\n", " 'to_dict',\n", " 'to_excel',\n", " 'to_feather',\n", " 'to_gbq',\n", " 'to_hdf',\n", " 'to_html',\n", " 'to_json',\n", " 'to_latex',\n", " 'to_markdown',\n", " 'to_numpy',\n", " 'to_parquet',\n", " 'to_period',\n", " 'to_pickle',\n", " 'to_records',\n", " 'to_sql',\n", " 'to_stata',\n", " 'to_string',\n", " 'to_timestamp',\n", " 'to_xarray',\n", " 'to_xml',\n", " 'transform',\n", " 'transpose',\n", " 'truediv',\n", " 'truncate',\n", " 'tz_convert',\n", " 'tz_localize',\n", " 'unstack',\n", " 'update',\n", " 'value_counts',\n", " 'values',\n", " 'var',\n", " 'where',\n", " 'xs']" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dir(df)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# search the table for values in a column, print \n", "# corresponding values in other column" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 john\n", "1 NaN\n", "2 NaN\n", "3 jeff\n", "4 NaN\n", "5 NaN\n", "6 NaN\n", "Name: name, dtype: object" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['name'].where(df['num_pets']>3)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "state\n", "california 3\n", "dc 2\n", "texas 2\n", "Name: name, dtype: int64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby('state')['name'].count()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# 2. Now we make some plots. There are many ways to do this, including\n", "# both pandas and matplotlib. Here we will plot one column against\n", "# another" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot num_children vs num_pets as line (doesn't really make sense)\n", "df.plot(kind='scatter',x='num_children',y='num_pets',color='red')" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# plot num_children vs num_pets as a scatter plot" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.plot(kind='scatter',x='num_children',y='num_pets',color='blue')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# plot name vs age as bar chart (note we can do this even though\n", "# 'name' is not a number since it's a bar chart)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.plot(kind='bar',x='name',y='age')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "# now make a single plot with two lines\n", "# This:\n", "#\n", "#df.plot(kind='line',x='name',y='num_children',color='blue')\n", "#df.plot(kind='line',x='name',y='num_pets',color='red')\n", "#\n", "# would actually give two separate plots, one above the\n", "# the other. To out both on a single graph, we make use of\n", "# some matplotlib functions" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# a. clear the graph\n", "plt.clf()\n", "\n", "# b. use matplotlib \"gca\", or \"get current axis\"\n", "ax = plt.gca()\n", "\n", "# c. make two plots, and use the same axes\n", "df.plot(kind='line',x='name',y='num_children',ax=ax)\n", "df.plot(kind='line',x='name',y='num_pets', color='red', ax=ax)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "# we can " ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.groupby('state')['name'].count().plot(kind='bar')" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.groupby('state').size().plot(kind='bar')" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.groupby(['state','gender']).size().unstack().plot(kind='bar',stacked=True)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.clf()\n", "df.groupby(['gender','state']).size().unstack().plot(kind='bar',stacked=True)\n", "plt.legend(loc='lower right')\n", "plt.gcf().set_size_inches(7,4)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## plot histogram for a dataframe column" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df[['age']].plot(kind='hist',bins=[0,20,40,60,80,100],rwidth=0.9,)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## percent single" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "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mZlZLjngzMyagUsuuYS9996bIUOG8NxzzwHwwgsvMGTIEPbbbz/69evHiy++2MRVNiwfojQzy7m5c+dy6623Mm/ePDZs2EC/fv3Yf//9+da3vsX48eMZNmwY69at+/QHlvPCAWdmlnOzZ89m2LBhFBVlPxh1zDHHsHbtWl5//XWGDRsGQOvWrZuyxEbhQ5RmZs1AxR/Cbw634XTAmZnl3KBBg7jzzjtZu3Yt7733Hvfccw9FRUV06dKFu+66C4APP/yQNWvWNG2hDcyHKM3MNrVaXtZfX/369eOEE06gT58+dOvWjYEDBwJw8803893vfpfzzz+fVq1acfvtt7P77rtv0toakwPOzKwZOPfcczn33M/ekWzmzJlNUM2m4UOUZmaWSw44MzPLJQecmZnlkgPOzMxyyQFnZma55IAzM7Nc8tcEzMw2seLx9zXo+pZcdnSDrevGG29kzpw5XHPNNVx33XUUFRVx0kkn8eyzz3LiiSciienTp9OjR496Pc/555/PoEGDGDJkSANV/lkOODMzq9Spp5766fBdd93Fsccey4UXXlijZSOCiKBFi8oPFP785z9vkBqr40OUZmbNwE033cS+++7Lfvvtx4gRI7jnnns48MAD6du3L0OGDGH58uWfWWbChAlceeWV/OUvf+Hqq6/m+uuvZ/DgwQBMnDiRXr160atXL66++moAlixZQs+ePRk3bhz9+vVj9uzZ9OzZkzFjxrDPPvtw+OGHs3btWgBGjRrF9OnTgSzs+vfvT69evRg7dmyD/U6mA87MLOcWLlzIJZdcwsyZM5k/fz6//OUv+dKXvsRjjz3GvHnzOPHEE7n88surXP4rX/kKp556KmeeeSYPPfQQc+fO5YYbbuDxxx/nscce43e/+x3z5s0D4LnnnuOkk05i3rx5dOvWjcWLF/P973+fhQsX0qFDB+64447PrP+0007jySef5JlnnmHt2rXce++9DbLdDjgzs5ybOXMmX//619lxxx0B2H777SkrK+OII46gd+/eXHHFFSxcuLDG63v00UcZNmwYbdu2pV27dnzta19j9uzZAHTr1o0BAwZ82rZ79+706dMHgP33358lS5Z8Zn0PPfQQBx54IL1792bmzJm1qqU6Djgzs5yLiM/cLuf000/ntNNOY8GCBfz2t79l3bp1tVpfVdq2bbvR+DbbbPPpcMuWLdmwYcNG89etW8e4ceOYPn06CxYsYMyYMbWqpToOODOznDv00EOZNm0aK1euBODtt99m9erVdO7cGYDJkyfXan2DBg3irrvuYs2aNXzwwQfceeedn96hoLbKw2zHHXfk/fff//S8XEPwVZRmZptYQ17WXxP77LMP5557LocccggtW7akb9++TJgwgeOPP57OnTszYMAAXn755Rqvr1+/fowaNYoDDjgAgFNOOYW+fftWevjx83To0IExY8bQu3dviouL6d+/f63XURVtSXd1LSkpiTlz5jR1Gc1aQ39/x2xLVtOgWrRoET179mzkavKvsv0oaW5ElFTW3ocozcwslxxwZmaWSw44M7NNYEs6HbQ5qsv+c8CZmTWy1q1bs3LlSodcHUUEK1eupHXr1rVazldRmpk1si5dulBWVsaKFSuaupQtVuvWrenSpUutlnHAmZk1slatWtG9e/emLqPZabRDlJKOlPScpBckjU/T/lvS05JuKmg3QtIPGqsOMzNrnhol4CS1BH4DHAX8BzBc0n7Af0bEvkBLSb0ltQFGAdc2Rh1mZtZ8NdYhygOAFyLiJQBJtwLHAFsr+0G0NsB64MfAryJifSPVYWZmzVRjBVxn4LWC8TLgQOAOYB7wILAa6B8R1d71TtJYYGwafV/Scw1frplZ7em/m7oCA7pVNaOxAk6VTIuIuBy4HEDS9cD5kk4BDgeejoiLK1loEjCpkeo0M7OcaqyLTMqA3QrGuwBLy0ck9U2DzwMnRcQ3gF6S9mykeszMrJlprIB7EthTUndJWwMnAncXzL8IOB9oBbRM0z4BihqpHjMza2YaJeAiYgNwGnA/sAiYFhELASQNBZ6MiKURsQr4p6QF2WIxvzHqMTOz5meLul2OWXMi6YfApIhY0xDtzJobB5zZZkrSEqAkIt5qiHZmzY1/bNlsMyCpraT7JM2X9IykC4BdgYckPZTa/I+kOZIWSrowTTujknaHS/qnpKck3S6pXVNtl1lTcg/ObDMg6TjgyIgYk8a/AMynoGcmafuIeDv9UtCDwBkR8XRhD07SjsCfgKMi4gNJPwW2+bzvm5rlkXtwZpuHBcCQ9HutAyNidSVtviHpKbIfS9iH7GfwKhqQpv9dUikwkmq+CGuWZ76bgNlmICKel7Q/8BXgUkkzCudL6g78iOzXf96RdCNQ2c2xBDwQEcMbu2azzZ17cGabAUm7AmsiYgpwJdAPeA9on5psC3wArJbUieyHzMsVtnsMOFjSHmm9RZL22gSbYLbZcQ/ObPPQG7hC0idkP0T+PeAg4K+SlkXEYEnzgIXAS8DfC5adVKHdKOCPkrZJ888j+9Ugs2bFF5mYmVku+RClmZnlkgPOzMxyyQFnZma55IAzM7NccsCZmVkuOeDMzCyXHHBmZpZL/wfw4NdJdMC0ZAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import matplotlib.ticker as mtick\n", "\n", "# create dummy variable them group by that\n", "# set the legend to false because we'll fix it later\n", "df.assign(\n", " dummy = 1 \n", ").groupby(['dummy','state']).size().groupby(level=0).apply(\n", " lambda x: 100 * x / x.sum()\n", ").to_frame().unstack().plot(kind='bar',stacked=True,legend=False)\n", "\n", "\n", "plt.title('Amount of records by State, normalized')\n", "\n", "\n", "# other it'll show up as 'dummy' \n", "plt.xlabel('state')\n", "\n", "# disable ticks in the x axis\n", "plt.xticks([])\n", "\n", "# fix the legend\n", "current_handles, _ = plt.gca().get_legend_handles_labels()\n", "reversed_handles = reversed(current_handles)\n", "\n", "labels = reversed(df['state'].unique())\n", "\n", "plt.legend(reversed_handles,labels,loc='lower right')\n", "\n", "plt.gcf().set_size_inches(7,4)\n", "plt.gca().yaxis.set_major_formatter(mtick.PercentFormatter())\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## percent, two-level group by" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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RCSRquNWXSJ7tK1bt7J69Wq2bNmS7VL2WHXr1qV58+bUqVMn26VIDaaAEylh9erVNGzYkFatWhEefiEV4e6sX7+e1atX07p162yXIzWYDlGKlLBlyxYOPPBAhVslmRkHHnig9oAl6xRwIqVQuGVG809ygQJOREQSSQEnkqPGjh3Lpk2bqqw/kZpGASeSoxRwIplRwInkgM8//5zTTjuNDh060K5dO0aNGsWaNWvo3r073buHZwRfeOGFFBYW0rZtW6699loA/vjHP+7U37Rp0zjxxBMpKCigX79+bNy4MWvTJZJNCjiRHPDMM89w6KGHsmjRIl577TV+8YtfcOihhzJz5kxmzpwJwOjRo5k3bx6vvvoqs2bN4tVXX+WSSy7Zob8PP/yQ6667jueee44FCxZQWFjImDFjsjx1ItmhgBPJAe3bt+e5557jyiuvZM6cOey333479TNp0iQKCgro2LEjS5Ys4fXXX9+pn5dffpnXX3+dLl26kJ+fz/jx43nrrbd2xySI5Bz90FskBxx99NHMnz+fp556iquuuopevXrt0H3lypXccsstzJ07l/3335/BgweX+jszd6dnz548+OCDu6t0kZylPTiRHLBmzRry8vL46U9/yi9/+UsWLFhAw4YN+eyzzwD49NNPqV+/Pvvttx/r1q3j6aef3j5san+dO3fmn//8JytWrABg06ZN/Oc//9n9EySSA7QHJ5IDFi9ezBVXXEGtWrWoU6cOf/7zn3nppZc49dRTadq0KTNnzqRjx460bduWww8/nC5dumwfdtiwYTv0d9999zFgwAC++OILAK677jqOPvrobE2aSNaYu2e7hnIrLCz0efPmZbuMzIzc+dyK7GYjP9ll56VLl9KmTZvdVExylTUfW414cjdWI6VZdeNp2S4hY2Y2390LS+umQ5QiIpJICjgREUkkBZyIiCSSAk5ERBJJASciIomkgBMRkUTS7+BEytB+fPsqHd/iQYt32X3Dhg1MnDiR4cOHV+nnitQ02oMTyTEbNmzgzjvvzHYZIns8BZxIjhkxYgRvvvkm+fn5XHHFFdx888106tSJY489dvtjcqZMmUKPHj1wd9auXcvRRx/Ne++9x6pVq+jatSsFBQUUFBTwr3/9C4C1a9fSrVs38vPzadeuHXPmzMnmJIrsFpUOODM7zMxmmtlSM1tiZpfG9geY2XQzWx7/7h/bdzGzV81srpkdGds1MrNnzcyqZnJE9nw33ngjRxxxBEVFRfTs2ZPly5fz73//m6KiIubPn8/s2bPp27cvhxxyCHfccQdDhw5l1KhRHHLIIRx88MFMnz6dBQsW8PDDD3PJJZcAMHHiRE455RSKiopYtGgR+fn52Z1Ikd0gk3Nw24DL3X2BmTUE5pvZdGAw8Ly732hmI4ARwJXA5cAZQCvgwtj8W+B635PuFyayG02bNo1p06bRsWNHADZu3Mjy5cvp1q0bf/rTn2jXrh2dO3dmwIABAGzdupWLLrqIoqIiateuvf1Gy506deK8885j69at9OnTRwEnNUKl9+Dcfa27L4jvPwOWAs2A3sD42Nt4oE98vxWoB+QBW83sCKCZu8+qbA0iSefuXHXVVRQVFVFUVMSKFSsYMmQIAO+++y61atVi3bp1fP311wDceuutNGnShEWLFjFv3jy+/PJLALp168bs2bNp1qwZAwcOZMKECVmbJpHdpUrOwZlZK6Aj8ArQxN3XQghB4ODY2w3AOOAXwO3AaMIenIikSH38zSmnnMI999zDxo0bgRBq77//Ptu2bePcc89l4sSJtGnTZvtTuz/55BOaNm1KrVq1uP/++/nqq68AeOuttzj44IMZOnQoQ4YMYcGCBdmZOJHdKOOfCZhZA+BR4Bfu/mm602nuXgR0jsN0A9aEt/YwYe/ucndfV8r4hwHDAFq0aJFpuSIVVtZl/VXtwAMPpEuXLrRr145TTz2Vs88+mxNPPBGABg0a8MADD3DXXXfRtWtXunbtSn5+Pp06deK0005j+PDhnHHGGTzyyCN0796d+vXrA/DCCy9w8803U6dOHRo0aKA9OKkRMnpcjpnVAZ4AnnX3MbHdMuB77r7WzJoCL7j7MSnDGPAscBZhT+73hPNyXd396l19nh6XI1VCj8vZLfS4nNynx+WkH6kBfwOWFodb9BgwKL4fBPyjxKCDgCfd/WPC+biv4yuvsrWIiIiUlMkhyi7AQGCxmRXFdr8GbgQmmdkQ4G2gX/EAZpZHCLhesdUYwuHNL4EBGdQiIiKyg0oHnLu/CKT7/drJaYbZBHRPaZ4DVO19kERERNCdTEREJKEUcCIikkgKOBERSSQ9LkekLFX9044yfqawU+8jR9KgQQN++ctfVm0dIgmnPTgREUkkBZxIDho9ejTHHHMMPXr0YNmyZQCsWLGCHj160KFDBwoKCnjzzTezXKVIbtMhSpEcM3/+fB566CEWLlzItm3bKCgo4LjjjuMnP/kJI0aMoG/fvmzZsmX7DZZFpHQKOJEcM2fOHPr27UteXri5z+mnn87mzZt599136du3LwB169bNZokiewQdohTJQSVvWq5HJopUnAJOJMd069aNKVOmsHnzZj777DMef/xx8vLyaN68OVOnTgXgiy++YNOmTdktVCTH6RClSFkqeFl/pgoKCjjrrLPIz8+nZcuWdO3aFYD777+fn/3sZ1xzzTXUqVOHRx55hMMPP3y31iayJ1HAieSgq6++mquv3vnpUTNmzMhCNSJ7Jh2iFBGRRFLAiYhIIingREQkkRRwIiKSSAo4ERFJJAWciIgkkn4mIFKGViOerNLxrbrxtCob13333ce8efO4/fbbueuuu8jLy+Occ87hjTfeoH///pgZkydP5ogjjsjoc6655hq6detGjx49qqhykeqngBNJiAsuuGD7+6lTp9K7d29GjRpVrmHdHXenVq3SD+r87ne/q5IaRXYnHaIUyUETJkzg2GOPpUOHDgwcOJDHH3+cE044gY4dO9KjRw/WrVu30zAjR47klltu4amnnmLs2LHcfffddO/eHYAxY8bQrl072rVrx9ixYwFYtWoVbdq0Yfjw4RQUFDBnzhzatGnD0KFDadu2Lb169WLz5s0ADB48mMmTJwMh7Dp16kS7du0YNmyY7pMpOUsBJ5JjlixZwujRo5kxYwaLFi3itttu46STTuLll19m4cKF9O/fn5tuuint8D/4wQ+44IILuOyyy5g5cybz58/n3nvv5ZVXXuHll1/mr3/9KwsXLgRg2bJlnHPOOSxcuJCWLVuyfPlyfv7zn7NkyRIaNWrEo48+utP4L7roIubOnctrr73G5s2beeKJJ6ptXohkQgEnkmNmzJjBmWeeyUEHHQTAAQccwOrVqznllFNo3749N998M0uWLCn3+F588UX69u1L/fr1adCgAT/60Y+YM2cOAC1btqRz587b+23dujX5+fkAHHfccaxatWqn8c2cOZMTTjiB9u3bM2PGjArVIrI7KeBEcoy77/S4nIsvvpiLLrqIxYsX85e//IUtW7ZUaHzp1K9ff4fmffbZZ/v72rVrs23bth26b9myheHDhzN58mQWL17M0KFDK1SLyO6kgBPJMSeffDKTJk1i/fr1AHz00Ud88sknNGvWDIDx48dXaHzdunVj6tSpbNq0ic8//5wpU6Zsf0JBRRWH2UEHHcTGjRu3n5cTyUW6ilKkDFV5WX95tG3blquvvprvfve71K5dm44dOzJy5Ej69etHs2bN6Ny5MytXriz3+AoKChg8eDDHH388AOeffz4dO3Ys9fBjWRo1asTQoUNp3749rVq1olOnThUeh8juYnvSFVCFhYU+b968bJeRmZH7ZbsCKeP5bkuXLqVNmza7qZjkKms+VvXvC6XidvfGW3Uws/nuXlhaNx2iFBGRRFLAiYhIIingREqxJx26z0Waf5ILFHAiJdStW5f169frS7qS3J3169dTt27dbJciNZyuohQpoXnz5qxevZoPPvgg26XsserWrUvz5s2zXYbUcAo4kRLq1KlD69ats12GiGSo2g5Rmtn3zWyZma0wsxGx3R/M7FUzm5DS30Azu7S66hARkZqpWgLOzGoDdwCnAt8GBphZB+A77n4sUNvM2ptZPWAwcGd11CEiIjVXdR2iPB5Y4e7/BTCzh4DTgb0t3GSvHrAVuAL4o7tvraY6RESkhqqugGsGvJPSvBo4AXgUWAg8D3wCdHL3XT5J0cyGAcNi40YzW1b15UoFHAR8mO0iMjLKyu5HpHz26PXB/pDtCqpEy3QdqivgSvsGcXe/CbgJwMzuBq4xs/OBXsCr7n5dKQONA8ZVU51SQWY2L91tcURqGq0Pua26LjJZDRyW0twcWFPcYGYd49v/AOe4+4+BdmZ2VDXVIyIiNUx1Bdxc4Cgza21mewP9gcdSuv8euAaoA9SO7b4G8qqpHhERqWGqJeDcfRtwEfAssBSY5O5LAMysDzDX3de4+wbgJTNbHAbzRdVRj1QpHS4W+YbWhxy2Rz0uR0REpLx0L0oREUkkBZyIiCSSAk5ERBJJASdpmVmLbNcgIlJZushE0jKzBe5eEN8/6u5nZLsmkWwxs8d21d3dT99dtUj56HE5siupd6Q5PGtViOSGEwm3IHwQeIXS79gkOUQBJ7viad6L1ESHAD2BAcDZwJPAg8W/8ZXco0OUkpaZfQV8TthSrQdsKu5E+GH+vtmqTSSbzGwfQtDdDPzO3f+U5ZKkFNqDk7TcvXbZfYnUHDHYTiOEWyvgj8Dfs1mTpKc9OBGRcjCz8UA74GngIXd/LcslSRkUcCIi5WBmXxMO2cOO56R1yD5HKeBERCSR9ENvERFJJAWciIgkkgJOJCHM7D4zOzPbdYjkCgWcSA1lZvqZkCSaFnCRLDCz3wI/Idz66UNgPjAFuANoTPhR/VB3f8PM7gM+BQoJd9P4lbtPNjMD/gT8D7CSlFtHmdlxwBigQRz/YHdfa2YvAP8CugCPAf+v2idWJEsUcCK7mZkVAmcAHQnr4AJCwI0DLnD35WZ2AnAnIbwAmgInAd8iBNNkoC9wDNAeaAK8DtxjZnUIwdfb3T8ws7OA0cB5cVyN3P271T6hIlmmgBPZ/U4C/uHumwHM7HGgLvAd4JGwYwbAPinDTHX3r4HXzaxJbNeNcC/Er4A1ZjYjtj+G8IPk6XFctYG1KeN6uOonSST3KOBEdr/S7kJfC9jg7vlphvkizfCl/ZDVgCXufmKacX2epr1IougiE5Hd70Xgh2ZW18waEO5tuAlYaWb9ACzoUMZ4ZgP9zay2mTUFusf2y4DGZnZiHFcdM2tbLVMiksMUcCK7mbvPJZxHW0S4Ue884BPCRSdDzGwRsAToXcaopgDLgcXAn4FZcfxfAmcCf4jjKiIc/hSpUXSrLpEsMLMG7r7RzPIIe2LD3H1BtusSSRKdgxPJjnFm9m3CxSXjFW4iVU97cCIikkg6ByciIomkgBMRkURSwImISCIp4EREJJEUcCIikkgKOBERSaT/D5GrS6PEomZNAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.ticker as mtick\n", "\n", "df.groupby(['gender','state']).size().groupby(level=0).apply(\n", " lambda x: 100 * x / x.sum()\n", ").unstack().plot(kind='bar',stacked=True,legend='reverse')\n", "\n", "plt.gca().yaxis.set_major_formatter(mtick.PercentFormatter())\n", "plt.title('Amount of records by Gender and State, normalized')\n", "# plt.legend(loc='lower right')\n", "plt.gcf().set_size_inches(7,4)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### date histograms" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namedate_of_birth
0john01/21/1988
1lisa03/10/1977
2peter07/25/1999
3carl01/22/1977
4linda09/30/1968
5betty09/15/1970
\n", "
" ], "text/plain": [ " name date_of_birth\n", "0 john 01/21/1988\n", "1 lisa 03/10/1977\n", "2 peter 07/25/1999\n", "3 carl 01/22/1977\n", "4 linda 09/30/1968\n", "5 betty 09/15/1970" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame({\n", " 'name':['john','lisa','peter','carl','linda','betty'],\n", " 'date_of_birth':[\n", " '01/21/1988','03/10/1977','07/25/1999','01/22/1977','09/30/1968','09/15/1970'\n", " ]\n", "})\n", "\n", "df" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namedate_of_birth
0john1988-01-21
1lisa1977-03-10
2peter1999-07-25
3carl1977-01-22
4linda1968-09-30
5betty1970-09-15
\n", "
" ], "text/plain": [ " name date_of_birth\n", "0 john 1988-01-21\n", "1 lisa 1977-03-10\n", "2 peter 1999-07-25\n", "3 carl 1977-01-22\n", "4 linda 1968-09-30\n", "5 betty 1970-09-15" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['date_of_birth'] = pd.to_datetime(df['date_of_birth'],infer_datetime_format=True)\n", "df" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "name object\n", "date_of_birth datetime64[ns]\n", "dtype: object" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEGCAYAAAB/+QKOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAYTElEQVR4nO3de7BdZ33e8e9jyR5sY3BBAlxdkJNowA7jGwcZYgI2xFTm5rghjVSHtEyIAtgtJB1awzCY0HYGhpYEYgehGNVAsF3AlqMG+UYTMJcxSDLGlm9EFQYf5FbCpvhGLWR+/WOvY7aP1pH2OTpL+1jn+5nZo73e9b5r/45G0qP17rXelapCkqTxDhl2AZKkmcmAkCS1MiAkSa0MCElSKwNCktRq7rALmE7z5s2rJUuWDLsMSXrK2Lx584+ran7bvoMqIJYsWcKmTZuGXYYkPWUk+cFE+5xikiS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtOguIJIuS/EOSO5PcnuSdLX2S5ONJtia5NckpffuWJ7m72XdBV3VKktp1eQaxG/h3VXUc8FLgvCTHj+tzFrC0ea0CPgGQZA5wcbP/eGBly1hJUoc6C4iquq+qbm7ePwTcCSwY1+1s4DPVcxNwdJJjgGXA1qraVlW7gCuavpKkA+SA3EmdZAlwMvCtcbsWAPf2bY82bW3tp05w7FX0zj5YvHjxlGtccsGXpjx2f9zzodcN5XMlTb+D7d+Rzr+kTvJ04ErgXVX14PjdLUNqL+17NlatqaqRqhqZP791ORFJ0hR0egaR5FB64fC5qrqqpcsosKhveyGwHThsgnZJ0gHS5VVMAT4F3FlVH52g23rgD5qrmV4K/LSq7gM2AkuTHJvkMGBF01eSdIB0eQZxGvBm4LYktzRt7wUWA1TVamAD8FpgK/Ao8JZm3+4k5wPXAXOAtVV1e4e1SpLG6SwgqurrtH+X0N+ngPMm2LeBXoBIkobAO6klSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktersgUFJ1gKvB3ZU1Yta9r8bOLevjuOA+VX1QJJ7gIeAx4HdVTXSVZ2SpHZdnkFcCiyfaGdVfaSqTqqqk4D3AF+tqgf6upzR7DccJGkIOguIqroReGCfHXtWApd3VYskafKG/h1EkiPonWlc2ddcwPVJNidZNZzKJGl26+w7iEl4A/CNcdNLp1XV9iTPAW5IcldzRrKHJkBWASxevLj7aiVplhj6GQSwgnHTS1W1vfl1B7AOWDbR4KpaU1UjVTUyf/78TguVpNlkqAGR5JnAK4G/7Ws7MslRY++B1wBbhlOhJM1eXV7mejlwOjAvyShwIXAoQFWtbrqdA1xfVY/0DX0usC7JWH2XVdW1XdUpSWrXWUBU1coB+lxK73LY/rZtwIndVCVJGtRM+A5CkjQDGRCSpFYGhCSplQEhSWplQEiSWhkQkqRWBoQkqZUBIUlqZUBIkloZEJKkVgaEJKmVASFJamVASJJaGRCSpFYGhCSplQEhSWplQEiSWnUWEEnWJtmRpPV50klOT/LTJLc0r/f37Vue5O4kW5Nc0FWNkqSJdXkGcSmwfB99vlZVJzWvDwIkmQNcDJwFHA+sTHJ8h3VKklp0FhBVdSPwwBSGLgO2VtW2qtoFXAGcPa3FSZL2adjfQbwsyXeTXJPk15u2BcC9fX1Gm7ZWSVYl2ZRk086dO7usVZJmlWEGxM3A86vqROAvgaub9rT0rYkOUlVrqmqkqkbmz58//VVK0iw1tICoqger6uHm/Qbg0CTz6J0xLOrruhDYPoQSJWlWG1pAJHlekjTvlzW13A9sBJYmOTbJYcAKYP2w6pSk2WpuVwdOcjlwOjAvyShwIXAoQFWtBt4EvD3JbuBnwIqqKmB3kvOB64A5wNqqur2rOiVJ7ToLiKpauY/9FwEXTbBvA7Chi7okSYMZ9lVMkqQZyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVIrA0KS1KqzgEiyNsmOJFsm2H9uklub1zeTnNi3754ktyW5JcmmrmqUJE1soIBI8qIpHPtSYPle9n8feGVVnQD8R2DNuP1nVNVJVTUyhc+WJO2nQc8gVif5dpJ3JDl6kAFVdSPwwF72f7OqftJs3gQsHLAWSdIBMFBAVNXLgXOBRcCmJJclOXMa6/hD4Jr+jwSuT7I5yaq9DUyyKsmmJJt27tw5jSVJ0uw2d9COVfWPSd4HbAI+DpycJMB7q+qqqRaQ5Ax6AfHyvubTqmp7kucANyS5qzkjaatrDc301MjISE21DknSkw36HcQJSf4cuBN4FfCGqjquef/nU/3wJCcAlwBnV9X9Y+1Vtb35dQewDlg21c+QJE3NoN9BXATcDJxYVedV1c3wxD/k75vKBydZDFwFvLmqvtfXfmSSo8beA68BWq+EkiR1Z9ApptcCP6uqxwGSHAI8raoerarPtg1IcjlwOjAvyShwIXAoQFWtBt4PPBv4q95MFbubK5aeC6xr2uYCl1XVtVP78SRJUzVoQHwZ+C3g4Wb7COB64DcmGlBVK/d2wKp6K/DWlvZtwIl7jpAkHUiDTjE9rarGwoHm/RHdlCRJmgkGDYhHkpwytpHkxcDPuilJkjQTDDrF9C7gC0m2N9vHAL/XSUWSpBlhoICoqo1JXgi8AAhwV1X9vNPKJElDNfCNcsBLgCXNmJOTUFWf6aQqSdLQDRQQST4L/CpwC/B401yAASFJB6lBzyBGgOOryqUsJGmWGPQqpi3A87osRJI0swx6BjEPuCPJt4HHxhqr6o2dVCVJGrpBA+IDXRYhSZp5Br3M9atJng8sraovJzkCmNNtaZKkYRp0ue8/Ar4IfLJpWgBc3VFNkqQZYNAvqc8DTgMehN7Dg4DndFWUJGn4Bg2Ix6pq19hGkrn07oOQJB2kBg2IryZ5L3B48yzqLwD/o7uyJEnDNmhAXADsBG4D/hjYwBSfJCdJemoY9CqmXwB/3bwkSbPAoFcxfT/JtvGvfYxZm2RHktbnSafn40m2Jrl13PMmlie5u9l3weR+JEnSdJjMWkxjngb8LvCsfYy5FLiIiRf0OwtY2rxOBT4BnJpkDnAxcCYwCmxMsr6q7hiwVknSNBjoDKKq7u97/aiq/gJ41T7G3Ag8sJcuZwOfqZ6bgKOTHAMsA7ZW1bbmyqkrmr6SpANo0OW+T+nbPITeGcVR+/nZC4B7+7ZHm7a29lP3UtsqYBXA4sWL97Ok2WXJBV8ayufe86HXDeVzdWD55+upb9Appv/a9343cA/wL/bzs9PSVntpb1VVa4A1ACMjI96bIUnTZNCrmM7o4LNHgUV92wuB7cBhE7RLkg6gQaeY/nRv+6vqo1P47PXA+UmuoDeF9NOqui/JTmBpkmOBHwErgH85heNLkvbDZK5iegm9f9QB3gDcyJO/K3iSJJcDpwPzkowCFwKHAlTVano3270W2Ao8Cryl2bc7yfnAdfRWjF1bVbdP6qeSJO23yTww6JSqegggyQeAL1TVWycaUFUr93bA5vGl502wbwO9AJEkDcmgS20sBnb1be8Clkx7NZKkGWPQM4jPAt9Oso7eFUXnMPENcJKkg8CgVzH95yTXAL/ZNL2lqr7TXVmSpGEbdIoJ4Ajgwar6GDDaXGUkSTpIDbpY34XAfwDe0zQdCvxNV0VJkoZv0DOIc4A3Ao8AVNV29n+pDUnSDDZoQOxqLkstgCRHdleSJGkmGDQgPp/kk/RWXP0j4Mv48CBJOqjt8yqmJAH+O/BC4EHgBcD7q+qGjmuTJA3RPgOiqirJ1VX1YsBQkKRZYtApppuSvKTTSiRJM8qgd1KfAbwtyT30rmQKvZOLE7oqTJI0XHsNiCSLq+qH9J4fLUmaRfZ1BnE1vVVcf5Dkyqr6nQNQkyRpBtjXdxD9j//8lS4LkSTNLPsKiJrgvSTpILevKaYTkzxI70zi8OY9/PJL6md0Wp0kaWj2GhBVNWd/Dp5kOfAxeo8OvaSqPjRu/7uBc/tqOQ6YX1UPNFdMPQQ8DuyuqpH9qUWSNDmDXuY6aUnmABcDZwKjwMYk66vqjrE+VfUR4CNN/zcAf1JVD/Qd5oyq+nFXNUqSJjaZ50FM1jJga1Vtq6pdwBXA2XvpvxK4vMN6JEmT0GVALADu7dsebdr2kOQIYDlwZV9zAdcn2Zxk1UQfkmRVkk1JNu3cuXMaypYkQbcBkZa2ia6EegPwjXHTS6dV1Sn0btI7L8kr2gZW1ZqqGqmqkfnz5+9fxZKkJ3QZEKPAor7thcD2CfquYNz0UvNQIqpqB7CO3pSVJOkA6TIgNgJLkxyb5DB6IbB+fKckzwReCfxtX9uRSY4aew+8BtjSYa2SpHE6u4qpqnYnOR+4jt5lrmur6vYkb2v2r266ngNcX1WP9A1/LrCu9ygK5gKXVdW1XdUqSdpTZwEBUFUbgA3j2laP274UuHRc2zbgxC5rkyTtXZdTTJKkpzADQpLUyoCQJLUyICRJrQwISVIrA0KS1MqAkCS1MiAkSa0MCElSKwNCktTKgJAktTIgJEmtDAhJUisDQpLUyoCQJLUyICRJrQwISVKrTgMiyfIkdyfZmuSClv2nJ/lpklua1/sHHStJ6lZnjxxNMge4GDgTGAU2JllfVXeM6/q1qnr9FMdKkjrS5RnEMmBrVW2rql3AFcDZB2CsJGkadBkQC4B7+7ZHm7bxXpbku0muSfLrkxxLklVJNiXZtHPnzumoW5JEtwGRlrYat30z8PyqOhH4S+DqSYztNVatqaqRqhqZP3/+VGuVJI3TZUCMAov6thcC2/s7VNWDVfVw834DcGiSeYOMlSR1q8uA2AgsTXJsksOAFcD6/g5JnpckzftlTT33DzJWktStzq5iqqrdSc4HrgPmAGur6vYkb2v2rwbeBLw9yW7gZ8CKqiqgdWxXtUqS9tRZQMAT00YbxrWt7nt/EXDRoGMlSQeOd1JLkloZEJKkVgaEJKmVASFJamVASJJaGRCSpFYGhCSplQEhSWplQEiSWhkQkqRWBoQkqZUBIUlqZUBIkloZEJKkVgaEJKmVASFJamVASJJadRoQSZYnuTvJ1iQXtOw/N8mtzeubSU7s23dPktuS3JJkU5d1SpL21NkjR5PMAS4GzgRGgY1J1lfVHX3dvg+8sqp+kuQsYA1wat/+M6rqx13VKEmaWJdnEMuArVW1rap2AVcAZ/d3qKpvVtVPms2bgIUd1iNJmoQuA2IBcG/f9mjTNpE/BK7p2y7g+iSbk6yaaFCSVUk2Jdm0c+fO/SpYkvRLnU0xAWlpq9aOyRn0AuLlfc2nVdX2JM8BbkhyV1XduMcBq9bQm5piZGSk9fiSpMnr8gxiFFjUt70Q2D6+U5ITgEuAs6vq/rH2qtre/LoDWEdvykqSdIB0GRAbgaVJjk1yGLACWN/fIcli4CrgzVX1vb72I5McNfYeeA2wpcNaJUnjdDbFVFW7k5wPXAfMAdZW1e1J3tbsXw28H3g28FdJAHZX1QjwXGBd0zYXuKyqru2qVknSnrr8DoKq2gBsGNe2uu/9W4G3tozbBpw4vl2SdOB4J7UkqZUBIUlqZUBIkloZEJKkVgaEJKmVASFJamVASJJaGRCSpFYGhCSplQEhSWplQEiSWhkQkqRWBoQkqZUBIUlqZUBIkloZEJKkVgaEJKlVpwGRZHmSu5NsTXJBy/4k+Xiz/9Ykpww6VpLUrc4CIskc4GLgLOB4YGWS48d1OwtY2rxWAZ+YxFhJUoe6PINYBmytqm1VtQu4Ajh7XJ+zgc9Uz03A0UmOGXCsJKlDczs89gLg3r7tUeDUAfosGHAsAElW0Tv7AHg4yd1TrHce8OMpjp2yfHifXYZS1wCmXNcAP/P+OOh+vzp20NU1G/985cP7VdfzJ9rRZUCkpa0G7DPI2F5j1RpgzeRK21OSTVU1sr/HmW7WNTnWNTnWNTmzra4uA2IUWNS3vRDYPmCfwwYYK0nqUJffQWwEliY5NslhwApg/bg+64E/aK5meinw06q6b8CxkqQOdXYGUVW7k5wPXAfMAdZW1e1J3tbsXw1sAF4LbAUeBd6yt7Fd1drY72mqjljX5FjX5FjX5MyqulLVOrUvSZrlvJNaktTKgJAktZr1AZFkbZIdSbYMu5YxSRYl+Yckdya5Pck7h10TQJKnJfl2ku82df3ZsGvql2ROku8k+bth19IvyT1JbktyS5JNw65nTJKjk3wxyV3Nn7WXzYCaXtD8Po29HkzyrmHXBZDkT5o/91uSXJ7kacOuCSDJO5uabp/u36tZ/x1EklcAD9O7o/tFw64HoLmb/JiqujnJUcBm4Ler6o4h1xXgyKp6OMmhwNeBdzZ3wQ9dkj8FRoBnVNXrh13PmCT3ACNVNaNusEryaeBrVXVJc7XgEVX1f4dc1hOaJXd+BJxaVT8Yci0L6P15P76qfpbk88CGqrp0yHW9iN5KE8uAXcC1wNur6h+n4/iz/gyiqm4EHhh2Hf2q6r6qurl5/xBwJ727y4eqWRLl4Wbz0OY1I/6HkWQh8DrgkmHX8lSQ5BnAK4BPAVTVrpkUDo1XA/9r2OHQZy5weJK5wBHMjHuzjgNuqqpHq2o38FXgnOk6+KwPiJkuyRLgZOBbQy4FeGIa5xZgB3BDVc2IuoC/AP498Ish19GmgOuTbG6WhpkJfgXYCfy3ZlrukiRHDruocVYAlw+7CICq+hHwX4AfAvfRu2fr+uFWBcAW4BVJnp3kCHq3DSzax5iBGRAzWJKnA1cC76qqB4ddD0BVPV5VJ9G7u31Zc4o7VEleD+yoqs3DrmUCp1XVKfRWJz6vmdYctrnAKcAnqupk4BFgxiyr30x5vRH4wrBrAUjyT+gtGHos8E+BI5P8/nCrgqq6E/gwcAO96aXvArun6/gGxAzVzPFfCXyuqq4adj3jNdMRXwGWD7cSAE4D3tjM9V8BvCrJ3wy3pF+qqu3NrzuAdfTmi4dtFBjtOwP8Ir3AmCnOAm6uqv8z7EIavwV8v6p2VtXPgauA3xhyTQBU1aeq6pSqegW96fJp+f4BDIgZqfky+FPAnVX10WHXMybJ/CRHN+8Pp/eX5q6hFgVU1XuqamFVLaE3LfH3VTX0/90BJDmyudCAZgrnNfSmBYaqqv43cG+SFzRNrwaGehHEOCuZIdNLjR8CL01yRPP389X0vhscuiTPaX5dDPxzpvH3rcvF+p4SklwOnA7MSzIKXFhVnxpuVZwGvBm4rZnvB3hvVW0YXkkAHAN8urm65BDg81U1oy4pnYGeC6zr/ZvCXOCyqrp2uCU94d8An2umc7bRLHUzbM1c+pnAHw+7ljFV9a0kXwRupjeF8x1mzrIbVyZ5NvBz4Lyq+sl0HXjWX+YqSWrnFJMkqZUBIUlqZUBIkloZEJKkVgaEJKmVAaGDUpJK8tm+7blJdk51pddm5dN39G2fPsxVY5P86yQXDevzNTsYEDpYPQK8qLmhD3rX1f9oP453NPCOfXV6qmjuZZH2yoDQwewaeiu8wrg7c5M8K8nVSW5NclOSE5r2DzTPCPlKkm1J/m0z5EPArzbPKPhI0/b0vucpfK65w/ZJmuN8uHmOxveS/GbT/qQzgCR/l+T05v3DzZjNSb6cZFlfPW/sO/yiJNcmuTvJhX3H+v3m825J8smxMGiO+8Ek3wKG/uwHzXwGhA5mVwArmge7nMCTV8T9M+A7VXUC8F7gM337Xgj8M3prJl3YrIt1Ab2lp0+qqnc3/U4G3gUcT2911NMmqGNuVS1r+l44QZ9+RwJfqaoXAw8B/4neGdA5wAf7+i0DzgVOAn43yUiS44Dfo7dA4EnA402fseNuqapTq+rrA9ShWW7WL7Whg1dV3dosl74SGL9MycuB32n6/X2zXPIzm31fqqrHgMeS7KC3XEabb1fVKECzJMoSeg+VGW9sscXNTZ99GXvwC8BtwGNV9fMkt40bf0NV3d98/lXNz7QbeDGwsTmhOZze0uzQC4srB/h8CTAgdPBbT28d/9OBZ/e17zEdxC8ffvRYX9vjTPz3ZLL9+vvs5sln8P2Pr/x5/XINnF+Mja+qXzQPqxlfb/92gE9X1Xta6vh/VfX4BDVKe3CKSQe7tcAHq+q2ce030ky9NHP/P97HMzceAo6axrruAU5KckiSRUxtCfAzm+9SDgd+G/gG8D+BN/Wt8PmsJM+fppo1y3gGoYNaMwX0sZZdH6D3NLVbgUeBf7WP49yf5BtJttD78vtL+1naN4Dv05tC2kJvldDJ+jrwWeDX6K0SuwkgyfvoPcHuEJoVPoGZ8thOPYW4mqskqZVTTJKkVgaEJKmVASFJamVASJJaGRCSpFYGhCSplQEhSWr1/wF2zqELlx0KsAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.clf()\n", "df['date_of_birth'].map(lambda d: d.month).plot(kind='hist')\n", "plt.xlabel('Month number')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Now try dates" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "# import modules\n", "from datetime import datetime\n", "from dateutil.parser import parse\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "datetime.datetime(2011, 1, 3, 0, 0)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create string variable and convert to datetime format\n", "war_start = '2011-01-03'\n", "datetime.strptime(war_start, '%Y-%m-%d')" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[datetime.datetime(2011, 7, 2, 0, 0),\n", " datetime.datetime(2012, 8, 6, 0, 0),\n", " datetime.datetime(2013, 11, 13, 0, 0),\n", " datetime.datetime(2011, 5, 26, 0, 0),\n", " datetime.datetime(2001, 5, 2, 0, 0)]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create a list of string variables and convert to datetime format\n", "attack_dates = ['7/2/2011', '8/6/2012', '11/13/2013', '5/26/2011', '5/2/2001']\n", "[datetime.strptime(x, '%m/%d/%Y') for x in attack_dates]" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "datetime.datetime(2011, 1, 3, 0, 0)" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Use parse() to attempt to auto-convert common string formats\n", "parse(war_start)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[datetime.datetime(2011, 7, 2, 0, 0),\n", " datetime.datetime(2012, 8, 6, 0, 0),\n", " datetime.datetime(2013, 11, 13, 0, 0),\n", " datetime.datetime(2011, 5, 26, 0, 0),\n", " datetime.datetime(2001, 5, 2, 0, 0)]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Use parse() on every element of the attack_dates string\n", "[parse(x) for x in attack_dates]" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "datetime.datetime(2011, 3, 1, 0, 0)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Use parse, but designate that the day is first\n", "parse(war_start, dayfirst=True)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " date value\n", "0 2014-05-01 18:47:05.069722 1\n", "1 2014-05-01 18:47:05.119994 1\n", "2 2014-05-02 18:47:05.178768 1\n", "3 2014-05-02 18:47:05.230071 1\n", "4 2014-05-02 18:47:05.230071 1\n", "5 2014-05-02 18:47:05.280592 1\n", "6 2014-05-03 18:47:05.332662 1\n", "7 2014-05-03 18:47:05.385109 1\n", "8 2014-05-04 18:47:05.436523 1\n", "9 2014-05-04 18:47:05.486877 1\n" ] } ], "source": [ "# Create a dataframe\n", "\n", "data = {'date': ['2014-05-01 18:47:05.069722', '2014-05-01 18:47:05.119994', '2014-05-02 18:47:05.178768', '2014-05-02 18:47:05.230071', '2014-05-02 18:47:05.230071', '2014-05-02 18:47:05.280592', '2014-05-03 18:47:05.332662', '2014-05-03 18:47:05.385109', '2014-05-04 18:47:05.436523', '2014-05-04 18:47:05.486877'],\n", " 'value': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}\n", "df = pd.DataFrame(data, columns = ['date', 'value'])\n", "print(df)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 2014-05-01 18:47:05.069722\n", "1 2014-05-01 18:47:05.119994\n", "2 2014-05-02 18:47:05.178768\n", "3 2014-05-02 18:47:05.230071\n", "4 2014-05-02 18:47:05.230071\n", "5 2014-05-02 18:47:05.280592\n", "6 2014-05-03 18:47:05.332662\n", "7 2014-05-03 18:47:05.385109\n", "8 2014-05-04 18:47:05.436523\n", "9 2014-05-04 18:47:05.486877\n", "Name: date, dtype: datetime64[ns]" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Convert df['date'] from string to datetime\n", "pd.to_datetime(df['date'])" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 4 }