Как установить pandas в jupiter notebook
Перейти к содержимому

Как установить pandas в jupiter notebook

  • автор:

Getting started

The next steps provides the easiest and recommended way to set up your environment to use pandas. Other installation options can be found in the advanced installation page.

Download Anaconda for your operating system and the latest Python version, run the installer, and follow the steps. Please note:

  • It is not needed (and discouraged) to install Anaconda as root or administrator.
  • When asked if you wish to initialize Anaconda3, answer yes.
  • Restart the terminal after completing the installation.

Detailed instructions on how to install Anaconda can be found in the Anaconda documentation.

In the Anaconda prompt (or terminal in Linux or macOS), start JupyterLab:

In JupyterLab, create a new (Python 3) notebook:

In the first cell of the notebook, you can import pandas and check the version with:

Now you are ready to use pandas, and you can write your code in the next cells.

Tutorials

You can learn more about pandas in the tutorials, and more about JupyterLab in the JupyterLab documentation.

Books

The book we recommend to learn pandas is Python for Data Analysis, by Wes McKinney, creator of pandas.

Introduction

Nikolay Grozev

This article overviews how to quickly set up and get started with the pandas data analysis library. It also lists common code snippets for parsing, loading, and transforming data. For more detailed documentation on pandas’ more advanced features (e.g. plot styling and combining data frames) you’ll need to refer to other sources.

Installing and Importing

First we need to install python and the pip package manager. If you don’t already have them, you can use pyenv to easily install them (tested on Ubuntu and OS X). On Ubuntu, you can follow these instructions to get pyenv. On OS X you can just use brew:

Once you have pyenv, you can install and configure the desired python version as follows:

Now we can use pip to install pandas, the ipython shell, and jupyter.

The last two libraries will allow us to create web base notebooks in which we can play with python and pandas. If you don’t know what jupyter notebooks are you can see this tutorial.

Next, we need to start jupyter. I find it useful to store all notebooks on a cloud storage or a folder under version control, so I can share between multiple machines. This can be achieved with an additional parameter as follows:

Next, we need to import pandas in the first cell of the jupyter notebook.:

Table Of Contents

When we have a long notebook, it is useful to have an automatically generated table of contents (TOC). The following code (Borrowed from this post on StackOverflow) installs the TOC jupyter plugin, i.e.:

Then we need to restart the kernel and make the first cell “Markdown” type and add the following:

When you save the TOC should appear.

Creating Data Frames

Data frames are the central concept in pandas. In essence, a data frame is table with labeled rows and columns. Data frames can be created from multiple sources — e.g. CSV files, excel files, and JSON.

Loading CSV files

Loading a CSV file as a data frame is pretty easy:

Sometimes the CSV file contains padding spaces in front of the values. To ignore them use the skipinitialspaces parameter:

If the padding white spaces occur on both sides of the cell values we need to use a regular expression separator. In this case, we need to use the ‘python’ processing engine, instead of the underlying native one, in order to avoid warnings. This will degrade the performance a bit:

Sometimes we need to sample the data before loading it, as it is too big to fit in memory. This can be achieved following this approach.

Hardcoded Dataframes

Hardcoded data frames can be constructed by providing a hash of columns and their values.

We will reuse this data frame in some subsequent examples.

Previewing Data

To preview the data and the metadata of a dataframe you can use the following functions:

Sorting

The sort_index method is used to sort the frame by one of its axis indices. The axis is either 0 or 1 — row/column axis respectively:

We can also sort by one or multiple columns:

Selecting/Querying

Individual columns can be selected with the [] operator or directly as attributes:

You can also select by absolute coordinates/position in the frame. Indices are zero based:

Most often, we need to select by a condition on the cell values. To do so, we provide a boolean array denoting which rows will be selected. The trick is that pandas predefines many boolean operators for its data frames and series. For example the following expression produces a boolean array:

This allows us to write queries like these:

Modifying Data Frames

Pandas’ operations tend to produce new data frames instead of modifying the provided ones. Many operations have the optional boolean inplace parameter which we can use to force pandas to apply the changes to subject data frame.

It is also possible to directly assign manipulate the values in cells, columns, and selections as follows:

It is often useful to create new columns based on existing ones by using a function. The new columns are often called Derived Characteristics:

Dates and Time

When loading data from a CSV, we can tell pandas to look for and parse dates. The parse_dates parameters can be used for that. In the most typical case, you would pass a list of column names as parse_dates:

This will work for most typical date formats. If it does not (i.e. we have a non-standard date format) we need to supply our own date parser:

Alternatively, if we’ve already loaded the data frame we can change a column from string to a date:

For more on date-time formats look at the documentation.

Often we need to work with Unix/Posix timestamps. Converting numeric timestamps to pandas timestamps is easy with the unit parameter:

If we need to parse Posix timestamps while reading CSVs, we can once again resort to converter functions. In the converter function we can use the pandas.to_datetime utility which accepts a unit parameter:

We can also convert time/timestamp data to Unix epoch numbers:

Plotting

Set Up

Pandas uses matplotlib to render graphs, so you need to install it:

Before we continue we need to test if matplotlib was set up properly. Open a terminal, start the python interpreter, and type:

If the import works without problems you’re good to go. However, sometimes in OS X you may get the following error:

“RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are Working with Matplotlib in a virtual enviroment, see ‘Working with Matplotlib in Virtual environments’ in the Matplotlib FAQ”

If that error occurs, you need to execute the following from terminal:

This will set the proper matplotlib backend, as discussed here.

Now we can import the matplot library in one of the jupyter notebook cells:

There is one last configuration to complete before we can display plots in the web notebook. We need to tell jupyter to display the matplotlib plots as images in the notebook itself. To do so, type the following command in one of the notbook cells:

Basic Plotting

In the rest of this section we’ll use the following data frame:

Data frames have a method called plot. By default, it plots a line chart with al numerical columns. The x-axis is the row index of the data frame. In other words, you’re plotting :

We can also specify a column for the x-axis:

The plot has an optional parameter kind which can be used to plot the data in different type of visualisation — e.g. bar harts, pie chart, or histograms.

Using kind=’bar’ produces multiple plots — one for each row. In each plot, there’s a bar for each cell.

Boxplots are displayed with the kind=’box’ options. Each box represents a numeric column.

Анализ данных и визуализация с помощью панд и Jupyter Notebook в Python 3

Пакет Python pandas используется для обработки и анализа данных, он разработан, чтобы позволить вам работать с помеченными или реляционными данными интуитивно понятным способом.

Пакет pandas предлагает функции электронных таблиц, но, поскольку вы работаете с Python, он намного быстрее и эффективнее, чем традиционная программа для работы с электронными таблицами.

В этом руководстве мы рассмотрим настройку большого набора данных для работы с функциями groupby() и pivot_table() для pandas и, наконец, как визуализировать данные.

Чтобы получить некоторое представление о пакете pandas , вы можете прочитать наше руководствоAn Introduction to the pandas Package and its Data Structures in Python 3.

Предпосылки

Это руководство расскажет, как работать с данными в pandas на локальном рабочем столе или на удаленном сервере. Работа с большими наборами данных может потребовать много памяти, поэтому в любом случае компьютеру потребуется не менее2GB of memory для выполнения некоторых вычислений в этом руководстве.

В этом руководстве мы будем использоватьJupyter Notebook для работы с данными. Если у вас его еще нет, следуйте нашимtutorial to install and set up Jupyter Notebook for Python 3.

Настройка данных

В этом руководстве мы будем работать с данными социального обеспечения США об именах детей, которые доступны изSocial Security website в виде zip-файла размером 8 МБ.

Давайте активируем нашу среду программирования Python 3 на нашемlocal machine или на нашемserver из правильного каталога:

Теперь давайте создадим новый каталог для нашего проекта. Мы можем назвать его names , а затем перейти в каталог:

В этом каталоге мы можем извлечь zip-файл с веб-сайта Социального обеспечения с помощью команды curl :

Как только файл будет загружен, давайте проверим, что у нас установлены все пакеты, которые мы будем использовать:

numpy для поддержки многомерных массивов

matplotlib для визуализации данных

pandas для нашего анализа данных

seaborn , чтобы сделать статистическую графику matplotlib более эстетичной

Если у вас еще нет установленных пакетов, установите их с помощью pip , как в:

Пакет numpy также будет установлен, если у вас его еще нет.

Теперь мы можем запустить Jupyter Notebook:

Когда вы войдете в веб-интерфейс Jupyter Notebook, вы увидите там файл names.zip .

Чтобы создать новый файл записной книжки, выберитеNew>Python 3 в правом верхнем раскрывающемся меню:

Create a new Python 3 notebook

Это откроет блокнот.

Начнем сimporting пакетов, которые мы будем использовать. В верхней части нашей записной книжки мы должны написать следующее:

Мы можем запустить этот код и перейти к новому блоку кода, набрав ALT + ENTER .

Давайте также скажем Python Notebook, чтобы наши графики были встроенными:

Давайте запустим код и продолжим, набрав ALT + ENTER .

С этого момента мы перейдем к распаковке zip-архива, загрузим набор данных CSV в pandas , а затем объединим pandas DataFrames.

Распаковка Zip-архива

Чтобы распаковать zip-архив в текущий каталог, мы импортируем модуль zipfile , а затем вызовем функцию ZipFile с именем файла (в нашем случае names.zip ):

Мы можем запустить код и продолжить, набрав ALT + ENTER .

Теперь, если вы вернетесь в свой каталог names , у вас будут файлы данных имен .txt в формате CSV. Эти файлы будут соответствовать годам данных в файле, с 1881 по 2015 год. Каждый из этих файлов соответствует похожему соглашению об именах. Например, файл 2015 года называется yob2015.txt , а файл 1927 года — yob1927.txt .

Чтобы взглянуть на формат одного из этих файлов, давайте используем Python, чтобы открыть его и отобразить 5 верхних строк:

Запустите код и продолжайте с ALT + ENTER .

Форматирование данных: сначала имя (как в Emma или Olivia ), затем пол (как в F для женского имени и M для мужского имени), а затем количество младенцев, родившихся в этом году с этим именем (в 2015 году родилось 20 355 младенцев по имени Эмма).

Имея эту информацию, мы можем загрузить данные в pandas .

Загрузить данные CSV в pandas

Чтобы загрузить данные значений, разделенных запятыми, в pandas , мы будем использовать функцию pd.read_csv() , передавая имя текстового файла, а также имена столбцов, которые мы выберем. Мы присвоим это переменной, в данном случае names2015 , поскольку мы используем данные из файла за 2015 год рождения.

Введите ALT + ENTER , чтобы запустить код и продолжить.

Чтобы убедиться, что это сработало, давайте отобразим верхнюю часть таблицы:

Когда мы запустим код и продолжим с ALT + ENTER , мы увидим следующий результат:

names2015.head output

Наша таблица теперь содержит информацию об именах, поле и количестве детей, рожденных с каждым именем, упорядоченным по столбцам.

Объединить объекты pandas

Объединение объектов pandas позволит нам работать со всеми отдельными текстовыми файлами в каталоге names .

Чтобы объединить их, нам сначала нужно инициализировать список, назначив переменную незаполненномуlist data type:

Как только мы это сделаем, мы будем использовать for loop для перебора всех файлов по годам, которые варьируются от 1880 до 2015. Мы добавим +1 к концу 2015 года, чтобы 2015 год был включен в цикл.

Внутри цикла мы добавим в список каждое из значений текстового файла, используяstring formatter для обработки различных имен каждого из этих файлов. Мы передадим эти значения переменной year . Опять же, мы укажем столбцы для Name , Sex и количества Babies :

Кроме того, мы создадим столбец для каждого года, чтобы сохранить упорядоченность. Это можно сделать после каждой итерации, используя индекс -1 , чтобы указывать на них по ходу цикла.

Наконец, мы добавим его к объекту pandas конкатенацией с помощью функции pd.concat() . Мы будем использовать переменную all_names для хранения этой информации.

Теперь мы можем запустить цикл с ALT + ENTER , а затем проверить вывод, вызвав хвост (самые нижние строки) результирующей таблицы:

all_names.tail outputl

Теперь наш набор данных готов и готов к дополнительной работе с ним в pandas .

Группировка данных

С помощью pandas вы можете группировать данные по столбцам с помощью функции .groupby() . Используя нашу переменную all_names для нашего полного набора данных, мы можем использовать groupby() для разделения данных на разные сегменты.

Давайте сгруппируем набор данных по полу и году. Мы можем настроить это так:

Мы можем запустить код и продолжить с ALT + ENTER .

На этом этапе, если мы просто вызовем переменную group_name , мы получим следующий результат:

Это показывает нам, что это объект DataFrameGroupBy . Этот объект содержит инструкции о том, как группировать данные, но не дает инструкций о том, как отображать значения.

Для отображения значений нам нужно будет дать инструкции. Мы можем вычислить .size() , .mean() и .sum() , например, чтобы вернуть таблицу.

Когда мы запустим код и продолжим с ALT + ENTER , наш результат будет выглядеть так:

Эти данные выглядят хорошо, но они могут быть более читабельными. Мы можем сделать его более читабельным, добавив функцию .unstack :

Теперь, когда мы запускаем код и продолжаем вводить ALT + ENTER , результат будет выглядеть следующим образом:

group_name.size().unstack() output

Эти данные говорят нам о том, сколько женских и мужских имен было за каждый год. Например, в 1889 году было 1479 женских и 1111 мужских имен. В 2015 году насчитывалось 18 993 женских и 13 959 мужских имен. Это показывает, что с течением времени происходит большее разнообразие имен.

Если мы хотим получить общее количество рожденных младенцев, мы можем использовать функцию .sum() . Давайте применим это к меньшему набору данных, names2015 , установленному из единственного файла yob2015.txt , который мы создали ранее:

Давайте наберем ALT + ENTER , чтобы запустить код и продолжить:

names2015.groupby([) .sum () output]

Это показывает нам общее количество младенцев мужского и женского пола, родившихся в 2015 году, хотя в набор данных включаются только те дети, чье имя использовалось не менее 5 раз в этом году.

Функция pandas .groupby() позволяет нам сегментировать наши данные на значимые группы.

Сводная таблица

Сводные таблицы полезны для обобщения данных. Они могут автоматически сортировать, подсчитывать, суммировать или усреднять данные, хранящиеся в одной таблице. Затем они могут показать результаты этих действий в новой таблице этих обобщенных данных.

В pandas функция pivot_table() используется для создания сводных таблиц.

Чтобы построить сводную таблицу, мы сначала вызовем DataFrame, с которым мы хотим работать, затем данные, которые мы хотим показать, и то, как они сгруппированы.

В этом примере мы будем работать с данными all_names и покажем данные о младенцах, сгруппированные по имени в одном измерении и году — в другом:

Когда мы набираем ALT + ENTER , чтобы запустить код и продолжить, мы увидим следующий результат:

pd.pivot_table(all_names

Поскольку это показывает много пустых значений, мы можем захотеть сохранить Имя и Год как столбцы, а не как строки в одном случае и столбцы в другом. Мы можем сделать это, сгруппировав данные в квадратных скобках:

После того, как мы введем ALT + ENTER , чтобы запустить код и продолжить, в этой таблице теперь будут отображаться данные только за те годы, которые зарегистрированы для каждого имени:

Кроме того, мы можем сгруппировать данные так, чтобы имя и пол были в одном измерении, а год — в другом:

Когда мы запустим код и продолжим с ALT + ENTER , мы увидим следующую таблицу:

pd.pivot_table(all_names

, ‘Year’) output]

Сводные таблицы позволяют нам создавать новые таблицы из существующих таблиц, что позволяет нам решать, как мы хотим, чтобы эти данные группировались.

Визуализируйте данные

Используя pandas с другими пакетами, такими как matplotlib , мы можем визуализировать данные в нашей записной книжке.

Мы будем визуализировать данные о популярности данного имени на протяжении многих лет. Для этого нам нужно установить и отсортировать индексы для обработки данных, которые позволят нам увидеть изменение популярности конкретного имени.

Пакет pandas позволяет нам выполнять иерархическое или многоуровневое индексирование, которое позволяет нам хранить и манипулировать данными с произвольным количеством измерений.

Мы собираемся проиндексировать наши данные с информацией о пол, затем имя, год. Мы также хотим отсортировать индекс:

Введите ALT + ENTER для запуска и перейдите к следующей строке, где в записной книжке будет отображаться новый проиндексированный фрейм данных:

Запустите код и продолжайте с ALT + ENTER , и результат будет выглядеть так:

all_names_index output

Далее мы хотим написать функцию, которая будет отображать популярность имени с течением времени. Мы вызовем функцию name_plot и передадим ей sex и name в качестве параметров, которые мы будем вызывать при запуске функции.

Теперь мы настроим переменную с именем data для хранения созданной таблицы. Мы также будем использовать pandas DataFrame loc , чтобы выбирать нашу строку по значению индекса. В нашем случае мы хотим, чтобы loc основывался на комбинации полей в MultiIndex, ссылаясь как на данные sex , так и на name .

Давайте запишем эту конструкцию в нашу функцию:

Наконец, нам нужно отобразить значения с matplotlib.pyplot , которые мы импортировали как pp . Затем мы сопоставим значения данных пола и имени с индексом, который для наших целей равен годам.

Введите ALT + ENTER , чтобы запустить и перейти в следующую ячейку. Теперь мы можем вызвать функцию с указанием пола и имени по нашему выбору, например F для женского имени с заданным именем Danica .

Когда вы сейчас наберете ALT + ENTER , вы получите следующий результат:

Danica Name Plot output

Обратите внимание, что в зависимости от того, какую систему вы используете, вы можете получить предупреждение о замене шрифта, но данные все равно будут отображаться правильно.

Глядя на визуализацию, мы видим, что женское имя Даника немного выросло в 1990 году и достигло максимума как раз перед 2010 годом.

Созданную нами функцию можно использовать для отображения данных из нескольких имен, чтобы мы могли видеть тенденции во времени для разных имен.

Давайте начнем с того, что сделаем наш сюжет немного больше:

Далее, давайте создадим список со всеми именами, которые мы хотели бы построить:

Теперь мы можем перебирать список с помощью цикла for и отображать данные для каждого имени. Во-первых, мы попробуем эти гендерно-нейтральные имена как женские имена:

Чтобы облегчить понимание этих данных, давайте добавим легенду:

Мы наберем ALT + ENTER , чтобы запустить код и продолжить, а затем мы получим следующий результат:

Name plot

В то время как каждое из имен постепенно завоевывало популярность как женские имена, имя, которое Джейми был чрезвычайно популярен как женское имя в 1980 году.

Давайте назовем те же имена, но на этот раз как мужские имена:

Снова введите ALT + ENTER , чтобы запустить код и продолжить. График будет выглядеть так:

Name plot

Эти данные показывают большую популярность среди имен, причем Джесси, как правило, является самым популярным выбором и особенно популярным в 1980-х и 1990-х годах.

Отсюда вы можете продолжать играть с данными имен, создавать визуализации различных имен и их популярности, а также создавать другие сценарии для просмотра различных данных для визуализации.

Заключение

В этом руководстве вы познакомились со способами работы с большими наборами данных от настройки данных до группировки данных с помощью groupby() и pivot_table() , индексации данных с помощью MultiIndex и визуализации данных pandas . используя пакет matplotlib .

Многие организации и учреждения предоставляют наборы данных, с которыми вы можете работать, чтобы продолжать изучать pandas и визуализацию данных. Правительство США предоставляет данные, например, черезdata.gov.

Вы можете узнать больше о визуализации данных с помощью matplotlib , следуя нашим руководствам поHow to Plot Data in Python 3 Using matplotlib иHow To Graph Word Frequency Using matplotlib with Python 3.

Jupyter python3 notebook cannot recognize pandas

I am using the Jupyter notebook with Python 3 selected. On the first line of a cell I am entering:

The error I get from the notebook is, ImportError: No module named ‘pandas’. How can I install pandas to the jupyter notebook? The computer I launched the Jupyter notebook from definitely has pandas.

And it says it is already installed but for Python 2.7 at the bottom. My script shows it is a Python 3 script at the top though.

When I do echo $PATH in Ubuntu is shows that ‘/home/user/anaconda2/bin’ is on the first entry. I think I may need to change this to be anaconda3?

UPDATE: When I try and launch a Python3 script through jupyter the command line which launched Jupyter gives me the error «ImportError: No module named ‘IPython.paths’. Then there is a timeout waiting for ‘kernel_info’ reply. Additionally, I tried removing anaconda but still experience the same error. I have tried to make so many quick fixes now, that I am not sure what the next step is to get this working.

15 Answers 15

As your default python version is 2.x , if you don’t have any emphasis on the python 3.x you can try from the first by the below scripts.

then in jupyter notebook:

The version of notebook will be 2.x. Otherwise install pip3 by the below Linux commands.

now you can add pandas to the notebook by !pip3 install pandas .

amin's user avatar

This worked for me

in Jupiter notebook

install the module on the terminal like this.

Or it can be installed directly from Jupyter Cell as follows

Abu Shoeb's user avatar

If you use anaconda already as a distribution, stop using pip in that context. Use conda instead and you will stop having headaches. The command lines and procedures for setting up a new environment are pretty well documented here.

Basically upgrading python or having specific branches:

Or using specific environments:

Zeugma's user avatar

simple step to resolve the problem is

( NOTE: Remember what you have selected python 2 or python 3).

for python 2+

or if you have user permission error type

for python 3+

or if you have user permission error type

Abdullah Akhtar's user avatar

If pip3 is install you could run

This is what i have done in my system:

I have installed both anaconda for python 2.7 and anaconda for python 3.5. Anaconda helps keep both the environment separate.

The directory structure is like this: anaconda2/bin/ anaconda3/bin/

Whenever i want to use python 2.7 i go to anaconda2/bin/ and create an environment or activate already existing environment and install or import all the necessary packages and same goes for python3.5 (go to anconda3/bin/ create or activate the required environment). This helps me keep things separate.

Since you are using anaconda you should first use «conda install » if that package is not found, then you can use pip install .

If you install both anaconda2 and anaconda3, its quite easy.. the shortcuts for anaconda prompt are in C:\Users\your-username\

there will be two folders anconda2 and anaconda3, you can start conda prompt for python2.7 from anaconda2 and python3.5 from anconda3

So, once you start the anaconda prompt you can just type «jupyter notebook» to open jupyter notebook in browser and import pandas(or any package).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *