{"cells":[{"metadata":{"trusted":true,"_uuid":"185e53edaa0ab910446bed39b7401bcbc0d6b9ab"},"cell_type":"code","source":"import pandas as pd \nimport json\n\n\ndef separate_json(series: pd.Series) -> pd.DataFrame():\n    \"\"\"\n    \n    Args:\n        series: Series before json parsing \n\n    Returns: DataFrame\n\n    \"\"\"\n    # TODO: Write TypeException\n    \n    if isinstance(series[0], str):\n        return pd.DataFrame(json.loads(s) for s in series)\n    return pd.DataFrame(s for s in series)\n\ndf = pd.read_csv('../input/train.csv', engine='python')\njson_col = ['device', 'geoNetwork', 'totals', 'trafficSource']\nnest_json_col = ['adwordsClickInfo']\n\ndf = df.join(separate_json(df[col_name]) for col_name in json_col).drop(json_col, axis=1)\ndf = df.join(separate_json(df[nest_json_col[0]])).drop(nest_json_col, axis=1)\ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f01ec6b2865ba09fc6811ecec00b04922691c489"},"cell_type":"code","source":"df.columns","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"31cf0dea1be31ab0721dc701e071f9dc2c3e5786"},"cell_type":"markdown","source":"After above preprocessing, we can enjoy to analyze!!"}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}