{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Работа с файлами, Pandas\n", "\n", "Часто бывает необходимо прочитать данные их файла, для этого удобно использовать модуль [pandas](https://pandas.pydata.org). Про параметры функции `read_csv` можно почитать [здесь](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html)." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "87c65c20275c471dad602afc2bd29fb6", "version_major": 2, "version_minor": 0 } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "data_frame = pd.read_csv('filename.csv', sep=';')\n", "data_frame" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "Когда вы обрабатываете CSV с помощью pandas, вы получаете объект под названием `DataFrame`, который состоит из строк и столбцов. Обратиет внимание, что в `out` выводится интерактивная таблица, в которой можно например сортировать данные и при этом исходный `DataFrame` не измениться. Вы можете получать столбцы таким же образом, каким получаете элементы словаря." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Index(['x', 'y', 'z'], dtype='object')\n", "0 1\n", "1 4\n", "2 7\n", "3 10\n", "4 13\n", "5 16\n", "6 19\n", "7 22\n", "8 25\n", "Name: x, dtype: int64\n" ] } ], "source": [ "print(data_frame.keys())\n", "print(data_frame['x'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Добавить колонку можно как для обычного словаря:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3235e57f371940bbb8fe985882569fbf", "version_major": 2, "version_minor": 0 } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np \n", "\n", "data_frame['t'] = np.random.randint(0, 3, size = len(data_frame['x']))\n", "data_frame" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Можно сортировать строки:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " x y z t\n", "2 7 8 9 0\n", "0 1 2 3 1\n", "7 22 23 24 1\n", "1 4 5 6 2\n", "3 10 11 12 2\n", "4 13 14 15 2\n", "5 16 17 18 2\n", "6 19 20 21 2\n", "8 25 26 27 2\n" ] } ], "source": [ "print(data_frame.sort_values(by=['t']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Или группировать с нахождением среднего:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " x y z\n", "t \n", "0 7.0 8.0 9.0\n", "1 11.5 12.5 13.5\n", "2 14.5 15.5 16.5\n" ] } ], "source": [ "print(data_frame.groupby(['t']).mean())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Применять функции к столбцам:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " x y z t u\n", "0 1 2 3 1 6\n", "1 4 5 6 2 7\n", "2 7 8 9 0 5\n", "3 10 11 12 2 7\n", "4 13 14 15 2 7\n", "5 16 17 18 2 7\n", "6 19 20 21 2 7\n", "7 22 23 24 1 6\n", "8 25 26 27 2 7\n" ] } ], "source": [ "data_frame['u'] = data_frame['t'].apply(lambda x: x+5)\n", "print(data_frame)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Записывать в файл (подробнее можно почитать [здесь](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html)):" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "data_frame.to_csv('filename_result.csv', index=False, sep=';')" ] } ], "metadata": { "kernelspec": { "display_name": "Python [default]", "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.6.7" } }, "nbformat": 4, "nbformat_minor": 2 }