{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Домашнее задание VIII\n", "\n", "**Составил:** Шабанова П.А. в рамках курса [Python дайджест](https://github.com/whitehorn/Python_Digest)\n", "\n", "**E-mail:** pa.shabanov@gmail.com\n", "\n", "**URL:** [Заметки по программированию в науках о Земле](http://progeoru.blogspot.ru/)\n", "\n", "### Справочный материал\n", "\n", "+ [Обзор модулей xlrd/xlwt](http://progeoru.blogspot.ru/search/label/excel)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Задачи\n", "\n", "### Задание 1\n", "\n", "Чтение данных их текстовых файлов - одна из самых распространённых задач при работе с данными наблюдений.\n", "\n", "1. Скачайте файл \"6742900.day\" из [архива по ссылке](https://yadi.sk/d/cyCvKQoqqhvLB). Это данные суточных расходов р. Дунай.\n", "\n", "2. С помощью функции numpy.genfromtxt() считайте численные данные из 6 столбцов, отделённых разделителем \";\". Воспользуйтесь синтаксисом Листинга-подсказки 1, а также из практических примеров занятия N6. Если есть силы - воспользуйтесь Листингом-подсказкой 2.\n", "\n", "3. Рассчитайте месячные расходы реки Дунай за 1931 год (воспользуйтесь срезом для данных 1931 года). Месячный расход рассчиать как сумму суточных расходов за соответствующий месяц. Для месячных величин также воспользуйтесь срезом (для массива A \"1янв1931-31дек1931\" длины 365 январские значения будут A[0:31]). Для суммирование можно воспользоваться либо функцией sum(), либо np.sum(), либо методом массивов A.sum()\n", "\n", "### Задание 2\n", "\n", "Запишите полученный массив месячных расходов р. Дунай за 1931 год в excel файл в виде двух столбцов: номер месяца (январь - 1) и значение. Для этого воспользуйтесь примерами из практических примеров L8 (см. Листинги 2 и 3.5) и модулем xlwt или методом таблиц A.to_excel() из модуля pandas ().\n", "\n", "#### Пример выполнения задания:\n", "\n", "1 186000.0\n", "\n", "2 194320.0\n", "\n", "### Присылайте ваши программы на адрес pa.shabanov@gmail.com с обязательным указанием имени, фамилии и номера занятия (N8)!" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(29220L, 5L)\n", "(365L, 5L) [['1931-01-01' '--:--' ' 6570.000' ' 6570.000' ' -999']\n", " ['1931-01-02' '--:--' ' 6480.000' ' 6480.000' ' -999']\n", " ['1931-01-03' '--:--' ' 6320.000' ' 6320.000' ' -999']\n", " ..., \n", " ['1931-12-29' '--:--' ' 4790.000' ' 4790.000' ' -999']\n", " ['1931-12-30' '--:--' ' 4540.000' ' 4540.000' ' -999']\n", " ['1931-12-31' '--:--' ' 4300.000' ' 4300.000' ' -999']]\n", "После метода np.genfromtxt тип данных объекта a будет :\n", "\n" ] } ], "source": [ "# ЛИСТИНГ-ПОДСКАЗКА 1\n", "\n", "import numpy as np\n", "import pandas as pd\n", "\n", "filename='6742900.day'\n", "\n", "# Для подсказок-описаний атрибутов функции genfromtxt() воспользуйтесь методом .__doc__\n", "#print np.genfromtxt.__doc__\n", "'''\n", "dtype - определяет тип считаных данных(int, float, str);\n", "skip_header=41 - пропускает 41 строчку сверху файла;\n", "delimiter - тип разделителя.\n", "'''\n", "a = np.genfromtxt(filename, delimiter=';', skip_header=41, dtype='str')\n", "print a.shape\n", "a = a[:365,:]\n", "print a.shape, a\n", "print 'После метода np.genfromtxt тип данных объекта a будет %s:' % type(a)\n", "# Преобразование к другому типу данных\n", "pda = pd.DataFrame(a)\n", "print type(pda)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "С помощью модуля pandas" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(29220, 5)\n", "\n", "После метода pd.read_csv тип данных объекта a будет :\n", "\n" ] } ], "source": [ "# ЛИСТИНГ-ПОДСКАЗКА 2\n", "\n", "# Для подсказок-описаний атрибутов функции read_csv() воспользуйтесь методом .__doc__\n", "#print pd.read_csv.__doc__\n", "'''\n", "header=40 - пропускает 39 строчек, а 40 использует для названия столбцов таблицы (DataFrame);\n", "sep - тип разделителя.\n", "'''\n", "a = pd.read_csv(filename, sep=';', header=40)\n", "print a.shape\n", "print a.head # верх таблицы\n", "\n", "print 'После метода pd.read_csv тип данных объекта a будет %s:' % type(a)\n", "\n", "# Преобразование к другому типу данных\n", "npa = np.array(a)\n", "print type(npa)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }