CoCalc Public FilesКопируйте материалы отсюда_spb / lesson1_libraries / 1. NumPy, Pandas.ipynbOpen with one click!
Authors: Ivan Drokin, Kliment Merzlyakov, Nikolay Novoselov
Views : 51
Description: Jupyter notebook Копируйте материалы отсюда_spb/lesson1_libraries/1. NumPy, Pandas.ipynb
Compute Environment: Ubuntu 18.04 (Deprecated)

NumPy

NumPy это библиотека для научных вычислений над многомерными (много измерений) массивами данных

Основное преимущество numpy - высокая скорость базовых операций

NumPy оперирует однородными (один тип данных) массивами данных (array).

In [2]:
import numpy as np

Создание массивов

Создаем массивы с разными измерениями

In [ ]:
a = np.arange(18) print ('One-dimensional ndarray:\n%s') % a
In [16]:
b = np.arange(18).reshape(9,2) print (('Two-dimensional ndarray:\n%s') % b)
Two-dimensional ndarray: [[ 0 1] [ 2 3] [ 4 5] [ 6 7] [ 8 9] [10 11] [12 13] [14 15] [16 17]]
In [5]:
c = np.arange(16).reshape(4,2,2) print (('Three-dimensional ndarray:\n%s') % c)
Three-dimensional ndarray: [[[ 0 1] [ 2 3]] [[ 4 5] [ 6 7]] [[ 8 9] [10 11]] [[12 13] [14 15]]]

У массивов есть несколько методов, которые описывают структуру:

  • ndim - количество измерений
  • shape - размер каждого измерения массива
  • size - количество элементов в массиве
In [6]:
print(c.ndim) print(c.shape) print(c.size)
3 (4, 2, 2) 16

Можно создавать массивы с помощью списков и кортежей

In [7]:
print (np.array([20, 40, 5])) print (np.array([(2,4,3),(1,1,1)]))
[20 40 5] [[2 4 3] [1 1 1]]

Можно создавать диапазоны чисел в массиве

In [8]:
print (np.arange(5, 20, 3))
[ 5 8 11 14 17]
In [9]:
print (np.linspace(0, 2, 9)) print (np.linspace( 0, 2, 9, endpoint=False ))
[ 0. 0.25 0.5 0.75 1. 1.25 1.5 1.75 2. ] [ 0. 0.22222222 0.44444444 0.66666667 0.88888889 1.11111111 1.33333333 1.55555556 1.77777778]

linespace удобно использовать для построения графиков

In [10]:
x = np.linspace( 0, 2*np.pi, 100 ) f = np.sin(x) from matplotlib import pyplot as plt # загружаем библиотеку для визуализации, о ней позднее %matplotlib inline plt.plot(f)
[<matplotlib.lines.Line2D at 0x7f53a5dcb150>]

Создание случайного массива заданной формы

In [11]:
print (np.random.random((3,4)))
[[ 0.9320729 0.10331258 0.73746864 0.37582122] [ 0.49707502 0.9866784 0.15237444 0.6903335 ] [ 0.03940998 0.85097942 0.2422113 0.60469182]]

Обработка массивов

Обращайте внимание на тип данных в массивах

In [12]:
a = np.array([20, 40, 21]) b = np.array([1, 2, 40]) print (a/b) a = np.array([20., 40., 21.]) b = np.array([1, 2, 40]) print (a/b)
[20 20 0] [ 20. 20. 0.525]

Индексирование и срезы

Работают классические для Python операции. Python считает с нуля, и в срезах последнее число не включается.

In [45]:
a = np.arange(1, 55, 3) print (a)
[ 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52]
In [46]:
print (a[4]) # взять пятый элемент
13
In [47]:
print (a[2:7]) # взять с третьего по седьмой элементы
[ 7 10 13 16 19]
In [48]:
a[2:10:1] = 100 print (a)
[ 1 4 100 100 100 100 100 100 100 100 31 34 37 40 43 46 49 52]
In [35]:
b = np.arange(1, 55, 3).reshape(6,3) print (b)
[[ 1 4 7] [10 13 16] [19 22 25] [28 31 34] [37 40 43] [46 49 52]]
In [18]:
print (b[1:3,:]) # взять все столбцы 2 - 3 строк
[[10 13 16] [19 22 25]]

Индексирование массивами (масками)

In [19]:
a = np.arange(12).reshape(3,4) print(a)
[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]
In [20]:
print(a>4)
[[False False False False] [False True True True] [ True True True True]]
In [21]:
print (a[a>4])
[ 5 6 7 8 9 10 11]
In [22]:
a[a%5 == 0] = 999 print (a)
[[999 1 2 3] [ 4 999 6 7] [ 8 9 999 11]]

Генерация распределений

In [54]:
np.random.seed(100) # для воспроизведение эксперимента используют seed dis = np.random.normal(10,50,1000) # создаёт выборку из нормального распределения с мат. ожидание = 10 и ср. кв. отклонением = 50 plt.hist(dis, bins=50) plt.show()
In [57]:
np.random.seed(100) dis = np.random.chisquare(1,1000) # распределение хи-квадрат с одной степенью свободы plt.hist(dis, bins = 50) plt.show()

Все доступные распределения можно найти здесь

Pandas

** Pandas ** - это библиотека для быстрой и удобной обработки и анализа данных.

В Pandas есть 3 структуры данных:

  • Одномерные ряды - Series
  • Двумерные таблицы - DataFrame
  • Трехмерные панели - Panel

Ключевой объект в pandas - data frame. Это классическая, реляционная таблица, где строками являются некоторые наблюдения (точки, объекты), а столбцами являются характеристики этих наблюдений (признаки, переменные, features).

In [59]:
import pandas as pd

Создание, чтение и запись таблиц

Создавать Series можно через списки, словари и массивы numpy:

In [61]:
print (pd.Series([1,3,5,np.nan,6,8],index=['a', 'b', 'c', 'd', 'e','f'])), '\n' # Одномерный ряд print (pd.Series(np.random.random(5), index=['a', 'b', 'c', 'd', 'e'])), '\n' print (pd.Series({'a' : 0., 'b' : 1., 'c' : 2.})), '\n'
a 1.0 b 3.0 c 5.0 d NaN e 6.0 f 8.0 dtype: float64 a 0.689678 b 0.422219 c 0.516317 d 0.929564 e 0.056705 dtype: float64 a 0.0 b 1.0 c 2.0 dtype: float64

Создавать data frame можно также через списки, словари, массивы Numpy, Series, другие data frame.

Для создания используюется функция DataFrame()
pd.DataFrame(data, index, columns, dtype, copy)
data - сами данные
index - нумерация/названия строк
columns - названия столбцов
copy - копировать ли исходный объект

In [27]:
a = np.random.random((6,4)) print(a)
[[ 7.41316767e-01 6.33803386e-02 3.99093874e-01 3.90608905e-01] [ 2.47313267e-01 4.65937522e-02 2.42420603e-01 2.61772652e-01] [ 9.21051966e-01 3.03392525e-01 3.14053303e-01 4.80314931e-02] [ 3.28835163e-01 4.66535268e-01 5.32248812e-02 7.73585401e-01] [ 1.72007963e-05 3.31318926e-01 4.98067663e-02 6.11716020e-02] [ 7.45585682e-01 1.28548725e-01 7.90110979e-01 4.13649148e-01]]
In [28]:
df = pd.DataFrame(a, columns=list('ABCD')) # создание через массив numpy df
A B C D
0 0.741317 0.063380 0.399094 0.390609
1 0.247313 0.046594 0.242421 0.261773
2 0.921052 0.303393 0.314053 0.048031
3 0.328835 0.466535 0.053225 0.773585
4 0.000017 0.331319 0.049807 0.061172
5 0.745586 0.128549 0.790111 0.413649

Будьте осторожны, изменения в df отражаются на массиве a. Чтобы этого избежать нужно при создании указывать copy()

In [29]:
df.iloc[0,0] = 10 print(df) print(a)
A B C D 0 10.000000 0.063380 0.399094 0.390609 1 0.247313 0.046594 0.242421 0.261773 2 0.921052 0.303393 0.314053 0.048031 3 0.328835 0.466535 0.053225 0.773585 4 0.000017 0.331319 0.049807 0.061172 5 0.745586 0.128549 0.790111 0.413649 [[ 1.00000000e+01 6.33803386e-02 3.99093874e-01 3.90608905e-01] [ 2.47313267e-01 4.65937522e-02 2.42420603e-01 2.61772652e-01] [ 9.21051966e-01 3.03392525e-01 3.14053303e-01 4.80314931e-02] [ 3.28835163e-01 4.66535268e-01 5.32248812e-02 7.73585401e-01] [ 1.72007963e-05 3.31318926e-01 4.98067663e-02 6.11716020e-02] [ 7.45585682e-01 1.28548725e-01 7.90110979e-01 4.13649148e-01]]
In [30]:
a = np.random.random((6,4)) df = pd.DataFrame(a, columns=list('ABCD'), copy = True) # либо df = pd.DataFrame(a).copy() df.iloc[0,0] = 10 print(df) print(a)
A B C D 0 10.000000 0.302646 0.049027 0.153727 1 0.233321 0.682092 0.205851 0.882234 2 0.466498 0.899800 0.893903 0.058604 3 0.487799 0.925278 0.372752 0.058062 4 0.361005 0.646829 0.559062 0.386999 5 0.641471 0.880591 0.828696 0.387949 [[ 0.85910012 0.30264585 0.04902749 0.1537269 ] [ 0.23332106 0.68209181 0.20585083 0.882234 ] [ 0.46649828 0.89980011 0.89390325 0.0586035 ] [ 0.48779882 0.925278 0.37275221 0.05806213] [ 0.36100497 0.64682945 0.55906217 0.38699929] [ 0.64147081 0.88059135 0.82869586 0.3879486 ]]
In [31]:
df = pd.DataFrame() # Создание пустой таблицы для дальнейшего заполнения
In [62]:
df = pd.DataFrame({ 'A' : 1., # Создание через словарь 'B' : pd.date_range('28.10.2016', periods=6, freq='D'), 'C' : np.random.random(6), 'D' : np.arange(6), 'E' : ['male','male','female','male','female','female'] }) print(df)
A B C D E 0 1.0 2016-10-28 0.031448 0 male 1 1.0 2016-10-29 0.967096 1 male 2 1.0 2016-10-30 0.401572 2 female 3 1.0 2016-10-31 0.490316 3 male 4 1.0 2016-11-01 0.929696 4 female 5 1.0 2016-11-02 0.663465 5 female

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

  • Из текстового файла (csv, txt) - read_csv
  • Напрямую из базы данных - read_sql
  • Из Excel файла - read_excel

pd.read_csv(filepath_or_buffer, sep, header, names, nrows, decimal, quotechar, ...)

filepath_or_buffer - путь к файлу
sep - разделитель, по умолчанию запятая
header - строка в которой находятся названия столбцов
names - список названий столбцов, если header = None
nrows - кол-во загруженных строк (для работы с большими файлами)
decimal - десятичный знак, по умолчанию точка
quotechar - знак "цитаты". В между этим знаком разделители будут игнорироваться. Полезно для работы с текстовыми данными

In [33]:
pd.read_csv('Ulmart data.csv', sep = ';')
"id" ctime name site_id visitor_name oper_name oper_lastname member_id msg who target_member_id
0 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 доброе утро 1 117818
1 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Здравствуйте. Чем могу помочь? 117818 1
2 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 подскажите могу я сегодня забрать свои заказы ... 1 117818
3 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Подскажите, пожалуйста, Ваши номера заказов и ... 117818 1
4 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 0030xxxx47 1 117818
5 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 0030xxxx12 1 117818
6 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 смартфон и наушники 1 117818
7 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Подождите, пожалуйста, сейчас проверю информац... 117818 1
8 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 да,жду 1 117818
9 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Ваши заказы №№ 0030xxxx12; 0030xxxx47 уже приш... 117818 1
10 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Могу сейчас приехать и забрать?Просто вчера пр... 1 117818
11 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Да, можете сейчас приехать и забрать. Кибермар... 117818 1
12 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Точно работает ?) 1 117818
13 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Точно. 117818 1
14 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Хорошо,спасибо 1 117818
15 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 С Новым Годом Вас. Нам важно мнение каждого на... 117818 1
16 61211003 2016-01-02 09:56:38.154502 ulmart.ru 35686 Алла NaN 0 ДОбрый день! ВИжу, что товары есть в пунктах Н... 1 0
17 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 заказала и оплатила 3 билета Гуанджоу-Москва н... 1 0
18 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Здравствуйте! 96074 1
19 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Мне нужна пауза для уточнения информации, я по... 96074 1
20 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Хорошо, жду 1 96074
21 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 К сожалению, у меня нет информации. Обратитесь... 96074 1
22 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 спасибо 1 96074
23 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 У Вас есть еще вопросы? 96074 1
24 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 нет 1 96074
25 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Нам важно мнение каждого нашего клиента. Оцени... 96074 1
26 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Здравствуйте,подскажите почему я не могу ввест... 1 96068
27 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Здравствуйте! 96068 1
28 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Подскажите Ваш город. 96068 1
29 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 тверь 1 96068
30 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Ожидайте, пожалуйста. 96068 1
31 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Промо-код не сработал, так как акция закончила... 96068 1
32 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 тогда уберите акцию с сайта 1 96068
33 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Да, конечно. Сейчас передам специалистам. Прин... 96068 1
34 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 когда будет исполнен заказ 1 92505
35 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 Здравствуйте. 92505 1
36 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 Номер заказа укажите, пожалуйста. 92505 1
37 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 В связи с длительным ожиданием диалога, я выну... 92505 1
38 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Здравствуйте! Подскажите пожалуйста работает л... 1 92505
39 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Здравствуйте. 92505 1
40 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Да, мы уже работаем. 92505 1
41 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Чем могу ещё Вам помочь? 92505 1
42 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Большое спасибо!) 1 92505

Запись происходит аналогично. pd.to_csv(path_or_buf, sep, header, index, ...)

index = True/False - будут ли записываться номера строк

Обработка данных

In [34]:
df = pd.read_csv('Ulmart data.csv', sep = ';')
In [35]:
df.head() # показать верхнюю часть таблицы
"id" ctime name site_id visitor_name oper_name oper_lastname member_id msg who target_member_id
0 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 доброе утро 1 117818
1 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Здравствуйте. Чем могу помочь? 117818 1
2 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 подскажите могу я сегодня забрать свои заказы ... 1 117818
3 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Подскажите, пожалуйста, Ваши номера заказов и ... 117818 1
4 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 0030xxxx47 1 117818
In [63]:
df.tail(3) # показать последнюю запись
A B C D E
3 1.0 2016-10-31 0.490316 3 male
4 1.0 2016-11-01 0.929696 4 female
5 1.0 2016-11-02 0.663465 5 female
In [37]:
df['msg'] # Выбор столбцов. Равносильно df.msg
0 доброе утро 1 Здравствуйте. Чем могу помочь? 2 подскажите могу я сегодня забрать свои заказы ... 3 Подскажите, пожалуйста, Ваши номера заказов и ... 4 0030xxxx47 5 0030xxxx12 6 смартфон и наушники 7 Подождите, пожалуйста, сейчас проверю информац... 8 да,жду 9 Ваши заказы №№ 0030xxxx12; 0030xxxx47 уже приш... 10 Могу сейчас приехать и забрать?Просто вчера пр... 11 Да, можете сейчас приехать и забрать. Кибермар... 12 Точно работает ?) 13 Точно. 14 Хорошо,спасибо 15 С Новым Годом Вас. Нам важно мнение каждого на... 16 ДОбрый день! ВИжу, что товары есть в пунктах Н... 17 заказала и оплатила 3 билета Гуанджоу-Москва н... 18 Здравствуйте! 19 Мне нужна пауза для уточнения информации, я по... 20 Хорошо, жду 21 К сожалению, у меня нет информации. Обратитесь... 22 спасибо 23 У Вас есть еще вопросы? 24 нет 25 Нам важно мнение каждого нашего клиента. Оцени... 26 Здравствуйте,подскажите почему я не могу ввест... 27 Здравствуйте! 28 Подскажите Ваш город. 29 тверь 30 Ожидайте, пожалуйста. 31 Промо-код не сработал, так как акция закончила... 32 тогда уберите акцию с сайта 33 Да, конечно. Сейчас передам специалистам. Прин... 34 когда будет исполнен заказ 35 Здравствуйте. 36 Номер заказа укажите, пожалуйста. 37 В связи с длительным ожиданием диалога, я выну... 38 Здравствуйте! Подскажите пожалуйста работает л... 39 Здравствуйте. 40 Да, мы уже работаем. 41 Чем могу ещё Вам помочь? 42 Большое спасибо!) Name: msg, dtype: object
In [38]:
df[['visitor_name','msg']]
visitor_name msg
0 Ольга доброе утро
1 Ольга Здравствуйте. Чем могу помочь?
2 Ольга подскажите могу я сегодня забрать свои заказы ...
3 Ольга Подскажите, пожалуйста, Ваши номера заказов и ...
4 Ольга 0030xxxx47
5 Ольга 0030xxxx12
6 Ольга смартфон и наушники
7 Ольга Подождите, пожалуйста, сейчас проверю информац...
8 Ольга да,жду
9 Ольга Ваши заказы №№ 0030xxxx12; 0030xxxx47 уже приш...
10 Ольга Могу сейчас приехать и забрать?Просто вчера пр...
11 Ольга Да, можете сейчас приехать и забрать. Кибермар...
12 Ольга Точно работает ?)
13 Ольга Точно.
14 Ольга Хорошо,спасибо
15 Ольга С Новым Годом Вас. Нам важно мнение каждого на...
16 Алла ДОбрый день! ВИжу, что товары есть в пунктах Н...
17 Елена заказала и оплатила 3 билета Гуанджоу-Москва н...
18 Елена Здравствуйте!
19 Елена Мне нужна пауза для уточнения информации, я по...
20 Елена Хорошо, жду
21 Елена К сожалению, у меня нет информации. Обратитесь...
22 Елена спасибо
23 Елена У Вас есть еще вопросы?
24 Елена нет
25 Елена Нам важно мнение каждого нашего клиента. Оцени...
26 Мария Здравствуйте,подскажите почему я не могу ввест...
27 Мария Здравствуйте!
28 Мария Подскажите Ваш город.
29 Мария тверь
30 Мария Ожидайте, пожалуйста.
31 Мария Промо-код не сработал, так как акция закончила...
32 Мария тогда уберите акцию с сайта
33 Мария Да, конечно. Сейчас передам специалистам. Прин...
34 елена когда будет исполнен заказ
35 елена Здравствуйте.
36 елена Номер заказа укажите, пожалуйста.
37 елена В связи с длительным ожиданием диалога, я выну...
38 Анна Здравствуйте! Подскажите пожалуйста работает л...
39 Анна Здравствуйте.
40 Анна Да, мы уже работаем.
41 Анна Чем могу ещё Вам помочь?
42 Анна Большое спасибо!)
In [39]:
df[0:3] # Выбор строк
"id" ctime name site_id visitor_name oper_name oper_lastname member_id msg who target_member_id
0 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 доброе утро 1 117818
1 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Здравствуйте. Чем могу помочь? 117818 1
2 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 подскажите могу я сегодня забрать свои заказы ... 1 117818
In [40]:
df[df.visitor_name == 'Мария'] # Для фильтрации строк, можно накладывать логические маски
"id" ctime name site_id visitor_name oper_name oper_lastname member_id msg who target_member_id
26 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Здравствуйте,подскажите почему я не могу ввест... 1 96068
27 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Здравствуйте! 96068 1
28 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Подскажите Ваш город. 96068 1
29 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 тверь 1 96068
30 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Ожидайте, пожалуйста. 96068 1
31 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Промо-код не сработал, так как акция закончила... 96068 1
32 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 тогда уберите акцию с сайта 1 96068
33 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Да, конечно. Сейчас передам специалистам. Прин... 96068 1
In [41]:
df.sort_values(by='ctime',ascending = False) # для сортировки можно пользоваться sort_values
"id" ctime name site_id visitor_name oper_name oper_lastname member_id msg who target_member_id
42 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Большое спасибо!) 1 92505
41 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Чем могу ещё Вам помочь? 92505 1
40 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Да, мы уже работаем. 92505 1
39 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Здравствуйте. 92505 1
38 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Здравствуйте! Подскажите пожалуйста работает л... 1 92505
37 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 В связи с длительным ожиданием диалога, я выну... 92505 1
36 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 Номер заказа укажите, пожалуйста. 92505 1
35 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 Здравствуйте. 92505 1
34 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 когда будет исполнен заказ 1 92505
29 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 тверь 1 96068
26 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Здравствуйте,подскажите почему я не могу ввест... 1 96068
27 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Здравствуйте! 96068 1
28 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Подскажите Ваш город. 96068 1
33 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Да, конечно. Сейчас передам специалистам. Прин... 96068 1
30 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Ожидайте, пожалуйста. 96068 1
31 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Промо-код не сработал, так как акция закончила... 96068 1
32 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 тогда уберите акцию с сайта 1 96068
22 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 спасибо 1 96074
25 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Нам важно мнение каждого нашего клиента. Оцени... 96074 1
24 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 нет 1 96074
23 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 У Вас есть еще вопросы? 96074 1
21 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 К сожалению, у меня нет информации. Обратитесь... 96074 1
19 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Мне нужна пауза для уточнения информации, я по... 96074 1
18 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Здравствуйте! 96074 1
17 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 заказала и оплатила 3 билета Гуанджоу-Москва н... 1 0
20 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Хорошо, жду 1 96074
16 61211003 2016-01-02 09:56:38.154502 ulmart.ru 35686 Алла NaN 0 ДОбрый день! ВИжу, что товары есть в пунктах Н... 1 0
1 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Здравствуйте. Чем могу помочь? 117818 1
8 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 да,жду 1 117818
2 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 подскажите могу я сегодня забрать свои заказы ... 1 117818
3 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Подскажите, пожалуйста, Ваши номера заказов и ... 117818 1
4 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 0030xxxx47 1 117818
5 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 0030xxxx12 1 117818
6 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 смартфон и наушники 1 117818
7 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Подождите, пожалуйста, сейчас проверю информац... 117818 1
11 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Да, можете сейчас приехать и забрать. Кибермар... 117818 1
9 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Ваши заказы №№ 0030xxxx12; 0030xxxx47 уже приш... 117818 1
10 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Могу сейчас приехать и забрать?Просто вчера пр... 1 117818
12 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Точно работает ?) 1 117818
13 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Точно. 117818 1
14 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Хорошо,спасибо 1 117818
15 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 С Новым Годом Вас. Нам важно мнение каждого на... 117818 1
0 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 доброе утро 1 117818
In [42]:
# переименуем столбцы df.columns = ['Id', 'Time','Website','Site_id','V_name','O_name','O_lastname','M_id','Message','Source','Target']
In [43]:
df.columns.values[2] = 'Site'
In [44]:
df.head()
Id Time Site Site_id V_name O_name O_lastname M_id Message Source Target
0 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 доброе утро 1 117818
1 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Здравствуйте. Чем могу помочь? 117818 1
2 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 подскажите могу я сегодня забрать свои заказы ... 1 117818
3 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Подскажите, пожалуйста, Ваши номера заказов и ... 117818 1
4 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 0030xxxx47 1 117818

Индексирование и срезы

.loc: фильтр по названию, либо по логической маске
.iloc: фильтр по позиции, либо по логической маске
.ix: фильтр и по позиции и по названию. С этим способом нужно быть аккуратным
.at: возвращает только одно значение. Быстрее, чем .loc
.iat: возвращает только одно значение. Быстрее, чем .iloc

In [45]:
df.loc[3:5,'V_name':'Message'] # Обратите внимание, включает крайнее правое значение '5'
V_name O_name O_lastname M_id Message
3 Ольга Елена NaN 117818 Подскажите, пожалуйста, Ваши номера заказов и ...
4 Ольга Елена NaN 117818 0030xxxx47
5 Ольга Елена NaN 117818 0030xxxx12
In [46]:
df.loc[df['Id']>61211002,]
Id Time Site Site_id V_name O_name O_lastname M_id Message Source Target
16 61211003 2016-01-02 09:56:38.154502 ulmart.ru 35686 Алла NaN 0 ДОбрый день! ВИжу, что товары есть в пунктах Н... 1 0
17 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 заказала и оплатила 3 билета Гуанджоу-Москва н... 1 0
18 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Здравствуйте! 96074 1
19 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Мне нужна пауза для уточнения информации, я по... 96074 1
20 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Хорошо, жду 1 96074
21 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 К сожалению, у меня нет информации. Обратитесь... 96074 1
22 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 спасибо 1 96074
23 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 У Вас есть еще вопросы? 96074 1
24 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 нет 1 96074
25 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Нам важно мнение каждого нашего клиента. Оцени... 96074 1
26 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Здравствуйте,подскажите почему я не могу ввест... 1 96068
27 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Здравствуйте! 96068 1
28 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Подскажите Ваш город. 96068 1
29 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 тверь 1 96068
30 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Ожидайте, пожалуйста. 96068 1
31 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Промо-код не сработал, так как акция закончила... 96068 1
32 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 тогда уберите акцию с сайта 1 96068
33 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Да, конечно. Сейчас передам специалистам. Прин... 96068 1
34 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 когда будет исполнен заказ 1 92505
35 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 Здравствуйте. 92505 1
36 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 Номер заказа укажите, пожалуйста. 92505 1
37 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 В связи с длительным ожиданием диалога, я выну... 92505 1
38 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Здравствуйте! Подскажите пожалуйста работает л... 1 92505
39 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Здравствуйте. 92505 1
40 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Да, мы уже работаем. 92505 1
41 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Чем могу ещё Вам помочь? 92505 1
42 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Большое спасибо!) 1 92505
In [47]:
df.iloc[3:5,[0,1,2,3]]
Id Time Site Site_id
3 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686
4 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686
In [48]:
df.ix[3:5,:4]
Id Time Site Site_id
3 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686
4 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686
5 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686
In [49]:
print(df.at[10,'Message'])
Могу сейчас приехать и забрать?Просто вчера приехали,а вы не работали.
In [50]:
df.iat[5,2]
'ulmart.ru'

**Логические операторы: **
== равно
!= не равно
| или
& и
~ не

Для случайной выборки используется функция sample()

In [51]:
df.sample(n=3, replace=False)
Id Time Site Site_id V_name O_name O_lastname M_id Message Source Target
38 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Здравствуйте! Подскажите пожалуйста работает л... 1 92505
10 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Могу сейчас приехать и забрать?Просто вчера пр... 1 117818
5 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 0030xxxx12 1 117818
In [52]:
df.sample(frac=0.7)
Id Time Site Site_id V_name O_name O_lastname M_id Message Source Target
29 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 тверь 1 96068
8 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 да,жду 1 117818
18 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Здравствуйте! 96074 1
16 61211003 2016-01-02 09:56:38.154502 ulmart.ru 35686 Алла NaN 0 ДОбрый день! ВИжу, что товары есть в пунктах Н... 1 0
5 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 0030xxxx12 1 117818
15 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 С Новым Годом Вас. Нам важно мнение каждого на... 117818 1
17 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 заказала и оплатила 3 билета Гуанджоу-Москва н... 1 0
13 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Точно. 117818 1
40 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Да, мы уже работаем. 92505 1
37 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 В связи с длительным ожиданием диалога, я выну... 92505 1
24 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 нет 1 96074
33 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Да, конечно. Сейчас передам специалистам. Прин... 96068 1
1 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Здравствуйте. Чем могу помочь? 117818 1
28 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Подскажите Ваш город. 96068 1
26 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Здравствуйте,подскажите почему я не могу ввест... 1 96068
36 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 Номер заказа укажите, пожалуйста. 92505 1
21 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 К сожалению, у меня нет информации. Обратитесь... 96074 1
35 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 Здравствуйте. 92505 1
42 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Большое спасибо!) 1 92505
6 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 смартфон и наушники 1 117818
19 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Мне нужна пауза для уточнения информации, я по... 96074 1
25 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Нам важно мнение каждого нашего клиента. Оцени... 96074 1
12 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Точно работает ?) 1 117818
10 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Могу сейчас приехать и забрать?Просто вчера пр... 1 117818
31 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга NaN 96068 Промо-код не сработал, так как акция закончила... 96068 1
22 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 спасибо 1 96074
7 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Подождите, пожалуйста, сейчас проверю информац... 117818 1
20 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Хорошо, жду 1 96074
11 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Да, можете сейчас приехать и забрать. Кибермар... 117818 1
14 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Хорошо,спасибо 1 117818
In [53]:
train_set = df.sample(frac=0.7) test_set = df.drop(train_set.index)

Метод isin() позволяет фильтровать по списку

In [54]:
df[df['O_name'].isin(['Юрий','Игорь'])]
Id Time Site Site_id V_name O_name O_lastname M_id Message Source Target
17 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 заказала и оплатила 3 билета Гуанджоу-Москва н... 1 0
18 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Здравствуйте! 96074 1
19 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Мне нужна пауза для уточнения информации, я по... 96074 1
20 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Хорошо, жду 1 96074
21 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 К сожалению, у меня нет информации. Обратитесь... 96074 1
22 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 спасибо 1 96074
23 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 У Вас есть еще вопросы? 96074 1
24 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 нет 1 96074
25 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Нам важно мнение каждого нашего клиента. Оцени... 96074 1
34 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 когда будет исполнен заказ 1 92505
35 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 Здравствуйте. 92505 1
36 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 Номер заказа укажите, пожалуйста. 92505 1
37 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь NaN 92505 В связи с длительным ожиданием диалога, я выну... 92505 1
38 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Здравствуйте! Подскажите пожалуйста работает л... 1 92505
39 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Здравствуйте. 92505 1
40 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Да, мы уже работаем. 92505 1
41 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Чем могу ещё Вам помочь? 92505 1
42 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь NaN 92505 Большое спасибо!) 1 92505

Добавляем новый столбец и меняем в нём значения

In [55]:
df['F'] = np.arange(len(df)) df.ix[0,'F'] = np.nan df.head()
Id Time Site Site_id V_name O_name O_lastname M_id Message Source Target F
0 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 доброе утро 1 117818 NaN
1 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Здравствуйте. Чем могу помочь? 117818 1 1.0
2 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 подскажите могу я сегодня забрать свои заказы ... 1 117818 2.0
3 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 Подскажите, пожалуйста, Ваши номера заказов и ... 117818 1 3.0
4 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена NaN 117818 0030xxxx47 1 117818 4.0
In [56]:
df.dropna(how='any') # any означает, что будет удалена строчка, если хотя бы один признак содержит NaN
Id Time Site Site_id V_name O_name O_lastname M_id Message Source Target F
17 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 заказала и оплатила 3 билета Гуанджоу-Москва н... 1 0 17.0
18 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Здравствуйте! 96074 1 18.0
19 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Мне нужна пауза для уточнения информации, я по... 96074 1 19.0
20 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Хорошо, жду 1 96074 20.0
21 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 К сожалению, у меня нет информации. Обратитесь... 96074 1 21.0
22 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 спасибо 1 96074 22.0
23 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 У Вас есть еще вопросы? 96074 1 23.0
24 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 нет 1 96074 24.0
25 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 Нам важно мнение каждого нашего клиента. Оцени... 96074 1 25.0
In [57]:
df.ix[0,'F'] = np.nan df.fillna(value=500,inplace = True) df.head()
Id Time Site Site_id V_name O_name O_lastname M_id Message Source Target F
0 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена 500 117818 доброе утро 1 117818 500.0
1 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена 500 117818 Здравствуйте. Чем могу помочь? 117818 1 1.0
2 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена 500 117818 подскажите могу я сегодня забрать свои заказы ... 1 117818 2.0
3 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена 500 117818 Подскажите, пожалуйста, Ваши номера заказов и ... 117818 1 3.0
4 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена 500 117818 0030xxxx47 1 117818 4.0

Дубликаты

duplicated() - возвращает логический список
drop_duplicates() - удаляет дубликаты

In [58]:
df.duplicated(['Id','V_name']) # первое вхождение считается уникальным
0 False 1 True 2 True 3 True 4 True 5 True 6 True 7 True 8 True 9 True 10 True 11 True 12 True 13 True 14 True 15 True 16 False 17 False 18 True 19 True 20 True 21 True 22 True 23 True 24 True 25 True 26 False 27 True 28 True 29 True 30 True 31 True 32 True 33 True 34 False 35 True 36 True 37 True 38 False 39 True 40 True 41 True 42 True dtype: bool
In [59]:
df.drop_duplicates(['Id','V_name'])
Id Time Site Site_id V_name O_name O_lastname M_id Message Source Target F
0 61211000 2016-01-02 09:55:58.369396 ulmart.ru 35686 Ольга Елена 500 117818 доброе утро 1 117818 500.0
16 61211003 2016-01-02 09:56:38.154502 ulmart.ru 35686 Алла 500 0 ДОбрый день! ВИжу, что товары есть в пунктах Н... 1 0 16.0
17 61211015 2016-01-02 09:58:23.428967 ulmart.ru 35686 Елена Юрий Б. 96074 заказала и оплатила 3 билета Гуанджоу-Москва н... 1 0 17.0
26 61211059 2016-01-02 10:02:30.837705 ulmart.ru 35686 Мария Ольга 500 96068 Здравствуйте,подскажите почему я не могу ввест... 1 96068 26.0
34 61211075 2016-01-02 10:04:20.420491 ulmart.ru 35686 елена Игорь 500 92505 когда будет исполнен заказ 1 92505 34.0
38 61211078 2016-01-02 10:04:36.14173 ulmart.ru 35686 Анна Игорь 500 92505 Здравствуйте! Подскажите пожалуйста работает л... 1 92505 38.0
In [60]:
print (df['Id'].nunique()) print (df['Id'].unique())
6 [61211000 61211003 61211015 61211059 61211075 61211078]

Анализ

In [61]:
movies = pd.read_csv('movie_metadata.csv', sep = ';')
In [62]:
movies.head()
color director_name num_critic_for_reviews duration director_facebook_likes actor_3_facebook_likes actor_2_name actor_1_facebook_likes gross actor_1_name ... num_user_for_reviews language country content_rating budget title_year actor_2_facebook_likes imdb_score aspect_ratio movie_facebook_likes
0 Color James Cameron 723.0 178.0 0.0 855.0 Joel David Moore 1000.0 760505847.0 CCH Pounder ... 3054.0 English USA PG-13 237000000.0 2009.0 936.0 7.9 1.78 33000
1 Color Gore Verbinski 302.0 169.0 563.0 1000.0 Orlando Bloom 40000.0 309404152.0 Johnny Depp ... 1238.0 English USA PG-13 300000000.0 2007.0 5000.0 7.1 2.35 0
2 Color Sam Mendes 602.0 148.0 0.0 161.0 Rory Kinnear 11000.0 200074175.0 Christoph Waltz ... 994.0 English UK PG-13 245000000.0 2015.0 393.0 6.8 2.35 85000
3 Color Christopher Nolan 813.0 164.0 22000.0 23000.0 Christian Bale 27000.0 448130642.0 Tom Hardy ... 2701.0 English USA PG-13 250000000.0 2012.0 23000.0 8.5 2.35 164000
4 NaN Doug Walker NaN NaN 131.0 NaN Rob Walker 131.0 NaN Doug Walker ... NaN NaN NaN NaN NaN NaN 12.0 7.1 NaN 0

5 rows × 25 columns

In [63]:
movies.dropna(how='any', inplace = True)
In [64]:
movies.shape
(3770, 25)
In [65]:
movies.describe() # выводит основные статистики по числовым признакам
num_critic_for_reviews duration director_facebook_likes actor_3_facebook_likes actor_1_facebook_likes gross num_voted_users cast_total_facebook_likes facenumber_in_poster num_user_for_reviews budget title_year actor_2_facebook_likes imdb_score aspect_ratio movie_facebook_likes
count 3770.000000 3770.000000 3770.000000 3770.000000 3770.000000 3.770000e+03 3.770000e+03 3770.000000 3770.000000 3770.000000 3.770000e+03 3770.000000 3770.000000 3770.000000 3770.000000 3770.000000
mean 166.846419 110.221485 804.459682 769.151989 7724.785411 5.242427e+07 1.054415e+05 11489.983024 1.376393 335.670292 4.608673e+07 2003.009549 2015.390716 6.463873 2.111202 9330.752785
std 123.537036 22.631720 3062.831521 1891.113599 15496.630039 7.025551e+07 1.518841e+05 19096.558629 2.040899 410.916203 2.256040e+08 9.887261 4537.712194 1.057305 0.352764 21431.059266
min 1.000000 37.000000 0.000000 0.000000 0.000000 1.620000e+02 2.200000e+01 0.000000 0.000000 1.000000 2.180000e+02 1927.000000 0.000000 1.600000 1.180000 0.000000
25% 77.000000 96.000000 11.000000 192.250000 744.250000 8.083416e+06 1.937225e+04 1906.000000 0.000000 109.000000 1.000000e+07 1999.000000 382.000000 5.900000 1.850000 0.000000
50% 138.000000 106.000000 63.000000 434.500000 1000.000000 3.001317e+07 5.355750e+04 4041.000000 1.000000 209.000000 2.500000e+07 2005.000000 683.000000 6.600000 2.350000 227.000000
75% 224.000000 120.000000 235.000000 690.000000 13000.000000 6.672026e+07 1.282162e+05 16228.750000 2.000000 398.000000 5.000000e+07 2010.000000 975.750000 7.200000 2.350000 11000.000000
max 813.000000 330.000000 23000.000000 23000.000000 640000.000000 7.605058e+08 1.689764e+06 656730.000000 43.000000 5060.000000 1.221550e+10 2016.000000 137000.000000 9.300000 16.000000 349000.000000
In [66]:
movies.mean() # можно считать статистики отдельно
num_critic_for_reviews 1.668464e+02 duration 1.102215e+02 director_facebook_likes 8.044597e+02 actor_3_facebook_likes 7.691520e+02 actor_1_facebook_likes 7.724785e+03 gross 5.242427e+07 num_voted_users 1.054415e+05 cast_total_facebook_likes 1.148998e+04 facenumber_in_poster 1.376393e+00 num_user_for_reviews 3.356703e+02 budget 4.608673e+07 title_year 2.003010e+03 actor_2_facebook_likes 2.015391e+03 imdb_score 6.463873e+00 aspect_ratio 2.111202e+00 movie_facebook_likes 9.330753e+03 dtype: float64
In [67]:
print (movies['country'].nunique()) print (movies['country'].unique())
45 ['USA' 'UK' 'New Zealand' 'Canada' 'Australia' 'Germany' 'China' 'New Line' 'France' 'Japan' 'Spain' 'Hong Kong' 'Czech Republic' 'Peru' 'South Korea' 'Aruba' 'Denmark' 'Ireland' 'South Africa' 'Italy' 'Romania' 'Chile' 'Netherlands' 'Hungary' 'Russia' 'Mexico' 'Belgium' 'Greece' 'Taiwan' 'Official site' 'Thailand' 'Iran' 'West Germany' 'Georgia' 'India' 'Brazil' 'Finland' 'Norway' 'Iceland' 'Argentina' 'Colombia' 'Poland' 'Israel' 'Indonesia' 'Afghanistan']

Apply - применение функции ко всем строкам или столбцам таблицы

In [68]:
movies[['duration','gross']].apply(np.mean, axis=0)
duration 1.102215e+02 gross 5.242427e+07 dtype: float64

Это очень удобно совмещать с lambda функциями - однострочными короткими функциями.

In [69]:
movies[['duration','gross']].apply(lambda x: x.max() - x.min())
duration 293.0 gross 760505685.0 dtype: float64

Добавление, убирание столбцов. Merge & join

In [70]:
m_list = [movies[:3], movies[3:7], movies[7:10]] # запишем 3 таблицы в список
In [71]:
pd.concat(m_list) # с помощью функции concat можно собирать списки таблиц в одну таблицу
color director_name num_critic_for_reviews duration director_facebook_likes actor_3_facebook_likes actor_2_name actor_1_facebook_likes gross actor_1_name ... num_user_for_reviews language country content_rating budget title_year actor_2_facebook_likes imdb_score aspect_ratio movie_facebook_likes
0 Color James Cameron 723.0 178.0 0.0 855.0 Joel David Moore 1000.0 760505847.0 CCH Pounder ... 3054.0 English USA PG-13 237000000.0 2009.0 936.0 7.9 1.78 33000
1 Color Gore Verbinski 302.0 169.0 563.0 1000.0 Orlando Bloom 40000.0 309404152.0 Johnny Depp ... 1238.0 English USA PG-13 300000000.0 2007.0 5000.0 7.1 2.35 0
2 Color Sam Mendes 602.0 148.0 0.0 161.0 Rory Kinnear 11000.0 200074175.0 Christoph Waltz ... 994.0 English UK PG-13 245000000.0 2015.0 393.0 6.8 2.35 85000
3 Color Christopher Nolan 813.0 164.0 22000.0 23000.0 Christian Bale 27000.0 448130642.0 Tom Hardy ... 2701.0 English USA PG-13 250000000.0 2012.0 23000.0 8.5 2.35 164000
5 Color Andrew Stanton 462.0 132.0 475.0 530.0 Samantha Morton 640.0 73058679.0 Daryl Sabara ... 738.0 English USA PG-13 263700000.0 2012.0 632.0 6.6 2.35 24000
6 Color Sam Raimi 392.0 156.0 0.0 4000.0 James Franco 24000.0 336530303.0 J.K. Simmons ... 1902.0 English USA PG-13 258000000.0 2007.0 11000.0 6.2 2.35 0
7 Color Nathan Greno 324.0 100.0 15.0 284.0 Donna Murphy 799.0 200807262.0 Brad Garrett ... 387.0 English USA PG 260000000.0 2010.0 553.0 7.8 1.85 29000
8 Color Joss Whedon 635.0 141.0 0.0 19000.0 Robert Downey Jr. 26000.0 458991599.0 Chris Hemsworth ... 1117.0 English USA PG-13 250000000.0 2015.0 21000.0 7.5 2.35 118000
9 Color David Yates 375.0 153.0 282.0 10000.0 Daniel Radcliffe 25000.0 301956980.0 Alan Rickman ... 973.0 English UK PG 250000000.0 2009.0 11000.0 7.5 2.35 10000
10 Color Zack Snyder 673.0 183.0 0.0 2000.0 Lauren Cohan 15000.0 330249062.0 Henry Cavill ... 3018.0 English USA PG-13 250000000.0 2016.0 4000.0 6.9 2.35 197000

10 rows × 25 columns

In [72]:
s = movies.iloc[3:5] movies.append(s, ignore_index=True) # равносильно pd.concat([df,s], axis = 0, ignore_index=True)
color director_name num_critic_for_reviews duration director_facebook_likes actor_3_facebook_likes actor_2_name actor_1_facebook_likes gross actor_1_name ... num_user_for_reviews language country content_rating budget title_year actor_2_facebook_likes imdb_score aspect_ratio movie_facebook_likes
0 Color James Cameron 723.0 178.0 0.0 855.0 Joel David Moore 1000.0 760505847.0 CCH Pounder ... 3054.0 English USA PG-13 237000000.0 2009.0 936.0 7.9 1.78 33000
1 Color Gore Verbinski 302.0 169.0 563.0 1000.0 Orlando Bloom 40000.0 309404152.0 Johnny Depp ... 1238.0 English USA PG-13 300000000.0 2007.0 5000.0 7.1 2.35 0
2 Color Sam Mendes 602.0 148.0 0.0 161.0 Rory Kinnear 11000.0 200074175.0 Christoph Waltz ... 994.0 English UK PG-13 245000000.0 2015.0 393.0 6.8 2.35 85000
3 Color Christopher Nolan 813.0 164.0 22000.0 23000.0 Christian Bale 27000.0 448130642.0 Tom Hardy ... 2701.0 English USA PG-13 250000000.0 2012.0 23000.0 8.5 2.35 164000
4 Color Andrew Stanton 462.0 132.0 475.0 530.0 Samantha Morton 640.0 73058679.0 Daryl Sabara ... 738.0 English USA PG-13 263700000.0 2012.0 632.0 6.6 2.35 24000
5 Color Sam Raimi 392.0 156.0 0.0 4000.0 James Franco 24000.0 336530303.0 J.K. Simmons ... 1902.0 English USA PG-13 258000000.0 2007.0 11000.0 6.2 2.35 0
6 Color Nathan Greno 324.0 100.0 15.0 284.0 Donna Murphy 799.0 200807262.0 Brad Garrett ... 387.0 English USA PG 260000000.0 2010.0 553.0 7.8 1.85 29000
7 Color Joss Whedon 635.0 141.0 0.0 19000.0 Robert Downey Jr. 26000.0 458991599.0 Chris Hemsworth ... 1117.0 English USA PG-13 250000000.0 2015.0 21000.0 7.5 2.35 118000
8 Color David Yates 375.0 153.0 282.0 10000.0 Daniel Radcliffe 25000.0 301956980.0 Alan Rickman ... 973.0 English UK PG 250000000.0 2009.0 11000.0 7.5 2.35 10000
9 Color Zack Snyder 673.0 183.0 0.0 2000.0 Lauren Cohan 15000.0 330249062.0 Henry Cavill ... 3018.0 English USA PG-13 250000000.0 2016.0 4000.0 6.9 2.35 197000
10 Color Bryan Singer 434.0 169.0 0.0 903.0 Marlon Brando 18000.0 200069408.0 Kevin Spacey ... 2367.0 English USA PG-13 209000000.0 2006.0 10000.0 6.1 2.35 0
11 Color Marc Forster 403.0 106.0 395.0 393.0 Mathieu Amalric 451.0 168368427.0 Giancarlo Giannini ... 1243.0 English UK PG-13 200000000.0 2008.0 412.0 6.7 2.35 0
12 Color Gore Verbinski 313.0 151.0 563.0 1000.0 Orlando Bloom 40000.0 423032628.0 Johnny Depp ... 1832.0 English USA PG-13 225000000.0 2006.0 5000.0 7.3 2.35 5000
13 Color Gore Verbinski 450.0 150.0 563.0 1000.0 Ruth Wilson 40000.0 89289910.0 Johnny Depp ... 711.0 English USA PG-13 215000000.0 2013.0 2000.0 6.5 2.35 48000
14 Color Zack Snyder 733.0 143.0 0.0 748.0 Christopher Meloni 15000.0 291021565.0 Henry Cavill ... 2536.0 English USA PG-13 225000000.0 2013.0 3000.0 7.2 2.35 118000
15 Color Andrew Adamson 258.0 150.0 80.0 201.0 Pierfrancesco Favino 22000.0 141614023.0 Peter Dinklage ... 438.0 English USA PG 225000000.0 2008.0 216.0 6.6 2.35 0
16 Color Joss Whedon 703.0 173.0 0.0 19000.0 Robert Downey Jr. 26000.0 623279547.0 Chris Hemsworth ... 1722.0 English USA PG-13 220000000.0 2012.0 21000.0 8.1 1.85 123000
17 Color Rob Marshall 448.0 136.0 252.0 1000.0 Sam Claflin 40000.0 241063875.0 Johnny Depp ... 484.0 English USA PG-13 250000000.0 2011.0 11000.0 6.7 2.35 58000
18 Color Barry Sonnenfeld 451.0 106.0 188.0 718.0 Michael Stuhlbarg 10000.0 179020854.0 Will Smith ... 341.0 English USA PG-13 225000000.0 2012.0 816.0 6.8 1.85 40000
19 Color Peter Jackson 422.0 164.0 0.0 773.0 Adam Brown 5000.0 255108370.0 Aidan Turner ... 802.0 English New Zealand PG-13 250000000.0 2014.0 972.0 7.5 2.35 65000
20 Color Marc Webb 599.0 153.0 464.0 963.0 Andrew Garfield 15000.0 262030663.0 Emma Stone ... 1225.0 English USA PG-13 230000000.0 2012.0 10000.0 7.0 2.35 56000
21 Color Ridley Scott 343.0 156.0 0.0 738.0 William Hurt 891.0 105219735.0 Mark Addy ... 546.0 English USA PG-13 200000000.0 2010.0 882.0 6.7 2.35 17000
22 Color Peter Jackson 509.0 186.0 0.0 773.0 Adam Brown 5000.0 258355354.0 Aidan Turner ... 951.0 English USA PG-13 225000000.0 2013.0 972.0 7.9 2.35 83000
23 Color Chris Weitz 251.0 113.0 129.0 1000.0 Eva Green 16000.0 70083519.0 Christopher Lee ... 666.0 English USA PG-13 180000000.0 2007.0 6000.0 6.1 2.35 0
24 Color Peter Jackson 446.0 201.0 0.0 84.0 Thomas Kretschmann 6000.0 218051260.0 Naomi Watts ... 2618.0 English New Zealand PG-13 207000000.0 2005.0 919.0 7.2 2.35 0
25 Color James Cameron 315.0 194.0 0.0 794.0 Kate Winslet 29000.0 658672302.0 Leonardo DiCaprio ... 2528.0 English USA PG-13 200000000.0 1997.0 14000.0 7.7 2.35 26000
26 Color Anthony Russo 516.0 147.0 94.0 11000.0 Scarlett Johansson 21000.0 407197282.0 Robert Downey Jr. ... 1022.0 English USA PG-13 250000000.0 2016.0 19000.0 8.2 2.35 72000
27 Color Peter Berg 377.0 131.0 532.0 627.0 Alexander Skarsgård 14000.0 65173160.0 Liam Neeson ... 751.0 English USA PG-13 209000000.0 2012.0 10000.0 5.9 2.35 44000
28 Color Colin Trevorrow 644.0 124.0 365.0 1000.0 Judy Greer 3000.0 652177271.0 Bryce Dallas Howard ... 1290.0 English USA PG-13 150000000.0 2015.0 2000.0 7.0 2.00 150000
29 Color Sam Mendes 750.0 143.0 0.0 393.0 Helen McCrory 883.0 304360277.0 Albert Finney ... 1498.0 English UK PG-13 200000000.0 2012.0 563.0 7.8 2.35 80000
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
3742 Color Tobe Hooper 277.0 88.0 365.0 177.0 Edwin Neal 383.0 30859000.0 Gunnar Hansen ... 826.0 English USA R 83532.0 1974.0 371.0 7.5 1.85 0
3743 Color Michael Moore 40.0 91.0 909.0 42.0 Pat Boone 909.0 6706368.0 Michael Moore ... 133.0 English USA R 160000.0 1989.0 91.0 7.5 1.66 667
3744 Color Alex Kendrick 31.0 111.0 589.0 51.0 Erin Bethea 589.0 10174663.0 Alex Kendrick ... 382.0 English USA PG 100000.0 2006.0 150.0 6.7 1.85 0
3745 Color Travis Cluff 159.0 81.0 3.0 7.0 Cassidy Gifford 220.0 22757819.0 Pfeifer Brown ... 150.0 English USA R 100000.0 2015.0 40.0 4.2 1.85 0
3746 Color Robert Townsend 21.0 81.0 467.0 287.0 Keenen Ivory Wayans 467.0 5228617.0 Robert Townsend ... 32.0 English USA R 100000.0 1987.0 322.0 7.0 1.85 471
3747 Black and White Larry Blamire 88.0 90.0 56.0 56.0 Brian Howe 126.0 110536.0 Fay Masterson ... 118.0 English USA PG 40000.0 2001.0 76.0 7.0 1.85 0
3748 Color E.L. Katz 193.0 88.0 3.0 307.0 Ethan Embry 3000.0 59379.0 Brighton Sharbino ... 52.0 English USA Not Rated 200000.0 2013.0 982.0 6.8 2.35 0
3749 Color Dennis Iliadis 241.0 114.0 29.0 616.0 Monica Potter 956.0 32721635.0 Tony Goldwyn ... 279.0 English USA R 15000000.0 2009.0 878.0 6.6 1.85 0
3750 Black and White Darren Aronofsky 138.0 84.0 0.0 194.0 Clint Mansell 1000.0 3216970.0 Mark Margolis ... 586.0 English USA R 60000.0 1998.0 512.0 7.5 1.66 24000
3751 Color Myles Berkowitz 32.0 87.0 0.0 153.0 Tom Ardavany 1000.0 536767.0 Tia Carrere ... 83.0 English USA R 60000.0 1998.0 184.0 5.3 1.85 30
3752 Color Morgan Spurlock 193.0 100.0 293.0 0.0 Amanda Kearsan 0.0 11529368.0 Chemeeka Walker ... 404.0 English USA PG 65000.0 2004.0 0.0 7.3 1.78 0
3753 Color Brandon Trost 66.0 82.0 32.0 128.0 Sean Whalen 968.0 40557.0 Clifton Collins Jr. ... 22.0 English USA R 60000.0 2011.0 407.0 5.6 2.35 0
3754 Color Joe Swanberg 65.0 82.0 217.0 442.0 Lena Dunham 10000.0 30084.0 Anna Kendrick ... 23.0 English USA R 70000.0 2014.0 969.0 5.6 1.85 812
3755 Color Edward Burns 36.0 98.0 0.0 73.0 Michael McGlone 138.0 10246600.0 Shari Albert ... 36.0 English USA R 25000.0 1995.0 111.0 6.6 1.85 265
3756 Color Lena Dunham 113.0 98.0 969.0 433.0 Merritt Wever 969.0 389804.0 Lena Dunham ... 35.0 English USA Not Rated 65000.0 2010.0 529.0 6.3 2.35 0
3757 Color David Gordon Green 75.0 90.0 234.0 15.0 Eddie Rouse 552.0 241816.0 Paul Schneider ... 76.0 English USA Unrated 42000.0 2000.0 61.0 7.5 2.35 451
3758 Color Kevin Jordan 21.0 90.0 4.0 113.0 Christa Miller 20000.0 277233.0 Derick Martini ... 26.0 English USA R 40000.0 1999.0 467.0 7.6 1.85 0
3759 Color Mike Bruce 3.0 78.0 6.0 17.0 Kirpatrick Thomas 32.0 243768.0 Joseph Campanella ... 9.0 English USA R 30000.0 2007.0 17.0 4.1 2.35 13
3760 Black and White Kevin Smith 136.0 102.0 0.0 216.0 Brian O'Halloran 898.0 3151130.0 Jason Mewes ... 615.0 English USA R 230000.0 1994.0 657.0 7.8 1.37 0
3761 Color Neil LaBute 80.0 97.0 119.0 7.0 Matt Malloy 136.0 2856622.0 Stacy Edwards ... 197.0 English Canada R 25000.0 1997.0 108.0 7.3 1.85 489
3762 Color David Ayer 233.0 109.0 453.0 120.0 Martin Donovan 1000.0 10499968.0 Mireille Enos ... 212.0 English USA R 35000000.0 2014.0 206.0 5.7 1.85 10000
3763 Black and White Richard Linklater 61.0 100.0 0.0 0.0 Richard Linklater 5.0 1227508.0 Tommy Pallotta ... 80.0 English USA R 23000.0 1991.0 0.0 7.1 1.37 2000
3764 Color John Waters 73.0 108.0 0.0 105.0 Mink Stole 462.0 180483.0 Divine ... 183.0 English USA NC-17 10000.0 1972.0 143.0 6.1 1.37 0
3765 Color Olivier Assayas 81.0 110.0 107.0 45.0 Béatrice Dalle 576.0 136007.0 Maggie Cheung ... 39.0 French France R 4500.0 2004.0 133.0 6.9 2.35 171
3766 Color Jafar Panahi 64.0 90.0 397.0 0.0 Nargess Mamizadeh 5.0 673780.0 Fereshteh Sadre Orafaiy ... 26.0 Persian Iran Not Rated 10000.0 2000.0 0.0 7.5 1.85 697
3767 Color Shane Carruth 143.0 77.0 291.0 8.0 David Sullivan 291.0 424760.0 Shane Carruth ... 371.0 English USA PG-13 7000.0 2004.0 45.0 7.0 1.85 19000
3768 Color Robert Rodriguez 56.0 81.0 0.0 6.0 Peter Marquardt 121.0 2040920.0 Carlos Gallardo ... 130.0 Spanish USA R 7000.0 1992.0 20.0 6.9 1.37 0
3769 Color Jon Gunn 43.0 90.0 16.0 16.0 Brian Herzlinger 86.0 85222.0 John August ... 84.0 English USA PG 1100.0 2004.0 23.0 6.6 1.85 456
3770 Color Christopher Nolan 813.0 164.0 22000.0 23000.0 Christian Bale 27000.0 448130642.0 Tom Hardy ... 2701.0 English USA PG-13 250000000.0 2012.0 23000.0 8.5 2.35 164000
3771 Color Andrew Stanton 462.0 132.0 475.0 530.0 Samantha Morton 640.0 73058679.0 Daryl Sabara ... 738.0 English USA PG-13 263700000.0 2012.0 632.0 6.6 2.35 24000

3772 rows × 25 columns

In [73]:
left = movies[['movie_title','budget']].drop_duplicates() right = movies[['movie_title','gross']].drop_duplicates() pd.merge(left, right, on='movie_title')
movie_title budget gross
0 Avatar 237000000.0 760505847.0
1 Pirates of the Caribbean: At World's End 300000000.0 309404152.0
2 Spectre 245000000.0 200074175.0
3 The Dark Knight Rises 250000000.0 448130642.0
4 John Carter 263700000.0 73058679.0
5 Spider-Man 3 258000000.0 336530303.0
6 Tangled 260000000.0 200807262.0
7 Avengers: Age of Ultron 250000000.0 458991599.0
8 Harry Potter and the Half-Blood Prince 250000000.0 301956980.0
9 Batman v Superman: Dawn of Justice 250000000.0 330249062.0
10 Superman Returns 209000000.0 200069408.0
11 Quantum of Solace 200000000.0 168368427.0
12 Pirates of the Caribbean: Dead Man's Chest 225000000.0 423032628.0
13 The Lone Ranger 215000000.0 89289910.0
14 Man of Steel 225000000.0 291021565.0
15 The Chronicles of Narnia: Prince Caspian 225000000.0 141614023.0
16 The Avengers 220000000.0 623279547.0
17 Pirates of the Caribbean: On Stranger Tides 250000000.0 241063875.0
18 Men in Black 3 225000000.0 179020854.0
19 The Hobbit: The Battle of the Five Armies 250000000.0 255108370.0
20 The Amazing Spider-Man 230000000.0 262030663.0
21 Robin Hood 200000000.0 105219735.0
22 The Hobbit: The Desolation of Smaug 225000000.0 258355354.0
23 The Golden Compass 180000000.0 70083519.0
24 King Kong 207000000.0 218051260.0
25 Titanic 200000000.0 658672302.0
26 Captain America: Civil War 250000000.0 407197282.0
27 Battleship 209000000.0 65173160.0
28 Jurassic World 150000000.0 652177271.0
29 Skyfall 200000000.0 304360277.0
... ... ... ...
3642 Another Earth 100000.0 1316074.0
3643 Sweet Sweetback's Baadasssss Song 500000.0 15180000.0
3644 Tadpole 150000.0 2882062.0
3645 Once 180000.0 9437933.0
3646 The Horse Boy 160000.0 155984.0
3647 Roger & Me 160000.0 6706368.0
3648 Facing the Giants 100000.0 10174663.0
3649 The Gallows 100000.0 22757819.0
3650 Hollywood Shuffle 100000.0 5228617.0
3651 The Lost Skeleton of Cadavra 40000.0 110536.0
3652 Cheap Thrills 200000.0 59379.0
3653 Pi 60000.0 3216970.0
3654 20 Dates 60000.0 536767.0
3655 Super Size Me 65000.0 11529368.0
3656 The FP 60000.0 40557.0
3657 Happy Christmas 70000.0 30084.0
3658 The Brothers McMullen 25000.0 10246600.0
3659 Tiny Furniture 65000.0 389804.0
3660 George Washington 42000.0 241816.0
3661 Smiling Fish & Goat on Fire 40000.0 277233.0
3662 The Legend of God's Gun 30000.0 243768.0
3663 Clerks 230000.0 3151130.0
3664 In the Company of Men 25000.0 2856622.0
3665 Slacker 23000.0 1227508.0
3666 Pink Flamingos 10000.0 180483.0
3667 Clean 4500.0 136007.0
3668 The Circle 10000.0 673780.0
3669 Primer 7000.0 424760.0
3670 El Mariachi 7000.0 2040920.0
3671 My Date with Drew 1100.0 85222.0

3672 rows × 3 columns

In [74]:
movies.groupby('country').mean()
num_critic_for_reviews duration director_facebook_likes actor_3_facebook_likes actor_1_facebook_likes gross num_voted_users cast_total_facebook_likes facenumber_in_poster num_user_for_reviews budget title_year actor_2_facebook_likes imdb_score aspect_ratio movie_facebook_likes
country
Afghanistan 105.000000 83.000000 6.000000 0.000000 30.000000 1.127331e+06 7559.000000 30.000000 1.000000 77.000000 4.600000e+04 2003.000000 0.000000 7.400000 1.850000 0.000000
Argentina 144.666667 116.333333 90.666667 20.000000 665.000000 7.230936e+06 57588.666667 752.666667 0.000000 131.000000 1.633333e+06 2004.333333 38.333333 7.600000 2.016667 11019.000000
Aruba 67.000000 91.000000 85.000000 105.000000 635.000000 1.007614e+07 11512.000000 1352.000000 0.000000 141.000000 3.500000e+07 1998.000000 316.000000 4.800000 2.350000 471.000000
Australia 161.102564 105.948718 235.641026 360.410256 6047.589744 4.315702e+07 87208.846154 9063.282051 1.051282 309.358974 3.785783e+07 2002.051282 2111.102564 6.433333 2.144872 14446.897436
Belgium 167.000000 109.000000 93.000000 521.000000 31000.000000 1.357042e+06 53977.000000 35561.000000 1.000000 125.000000 1.500000e+07 2011.000000 3000.000000 7.100000 2.350000 14000.000000
Brazil 121.600000 116.200000 170.800000 15.800000 470.000000 2.712574e+06 130511.600000 549.800000 0.800000 229.800000 3.640000e+06 2007.200000 32.000000 7.760000 2.150000 7855.600000
Canada 137.229508 102.606557 155.196721 285.459016 3770.885246 2.582641e+07 52130.836066 4973.622951 1.163934 272.065574 2.236377e+07 2004.245902 496.081967 6.172131 2.102951 3940.360656
Chile 120.000000 127.000000 36.000000 399.000000 562.000000 1.218864e+07 21098.000000 2230.000000 7.000000 56.000000 2.600000e+07 2015.000000 499.000000 6.900000 2.350000 0.000000
China 180.923077 124.846154 379.846154 232.615385 3840.384615 2.049488e+07 70475.153846 5380.538462 1.692308 282.000000 9.246400e+07 2006.230769 1136.230769 7.192308 2.350000 4649.615385
Colombia 155.000000 101.000000 13.000000 6.000000 280.000000 6.517198e+06 30474.000000 308.000000 0.000000 172.000000 3.000000e+06 2004.000000 11.000000 7.500000 1.850000 0.000000
Czech Republic 134.000000 117.000000 61.333333 269.666667 9276.666667 1.294772e+06 25580.333333 10100.333333 1.333333 176.000000 4.881667e+07 2006.666667 319.333333 6.966667 2.183333 6333.333333
Denmark 221.625000 110.625000 1221.875000 377.375000 6111.250000 1.583248e+06 71504.875000 7872.375000 0.875000 305.875000 1.553750e+07 2005.500000 988.500000 7.287500 2.160000 18320.125000
Finland 205.000000 93.000000 592.000000 36.000000 232.000000 6.117090e+05 15267.000000 391.000000 1.000000 41.000000 3.850000e+06 2011.000000 67.000000 7.200000 1.850000 0.000000
France 163.049505 110.792079 405.009901 632.613861 5749.752475 1.919454e+07 71929.950495 8183.386139 1.079208 254.118812 3.147024e+07 2005.118812 1243.950495 6.774257 2.172772 6617.346535
Georgia 74.000000 113.000000 212.000000 18.000000 567.000000 1.714900e+04 12128.000000 708.000000 9.000000 61.000000 2.000000e+07 2011.000000 111.000000 5.600000 2.350000 0.000000
Germany 153.312500 111.200000 328.187500 584.250000 6437.625000 3.002227e+07 91308.750000 9572.675000 1.400000 367.450000 3.626125e+07 2003.412500 1763.875000 6.303750 2.168500 5828.650000
Greece 263.000000 112.000000 337.000000 201.000000 4000.000000 3.707794e+06 31359.000000 5671.000000 0.000000 156.000000 1.800000e+07 2016.000000 820.000000 6.700000 2.350000 0.000000
Hong Kong 163.846154 102.923077 22.923077 222.230769 4018.076923 1.286853e+07 37842.769231 5726.692308 1.000000 139.538462 2.700769e+07 2005.000000 1226.384615 6.884615 2.311538 2002.538462
Hungary 83.500000 121.500000 30.000000 175.000000 1504.500000 1.168760e+07 19277.000000 2134.000000 1.500000 44.500000 1.260000e+09 2008.000000 388.500000 6.450000 2.100000 3303.500000
Iceland 61.000000 99.000000 29.000000 64.000000 117.000000 1.995900e+04 3579.000000 298.000000 2.000000 14.000000 3.800000e+06 2009.000000 64.000000 6.900000 2.350000 0.000000
India 122.400000 143.000000 158.400000 417.400000 4989.000000 5.690030e+06 35185.800000 6949.400000 2.000000 232.200000 1.454435e+08 2008.400000 924.200000 7.220000 2.250000 11131.800000
Indonesia 481.000000 102.000000 338.000000 60.000000 1000.000000 4.105123e+06 148221.000000 1445.000000 0.000000 316.000000 1.100000e+06 2011.000000 342.000000 7.600000 1.850000 51000.000000
Iran 116.500000 107.250000 219.750000 242.750000 4206.750000 2.424418e+06 46193.250000 4964.000000 0.500000 107.000000 3.672500e+06 1996.500000 304.000000 7.725000 1.975000 12193.250000
Ireland 232.428571 98.714286 202.714286 283.714286 3243.142857 9.768199e+06 63060.428571 5787.285714 1.285714 211.428571 1.416857e+07 2008.571429 2120.285714 6.985714 2.207143 16528.857143
Israel 231.000000 90.000000 56.000000 0.000000 56.000000 2.283276e+06 46107.000000 56.000000 0.000000 156.000000 1.500000e+06 2008.000000 0.000000 8.000000 1.850000 0.000000
Italy 134.181818 132.818182 326.181818 194.727273 5646.363636 3.445189e+06 95678.090909 6467.545455 2.272727 219.363636 1.277273e+07 1993.272727 275.272727 7.345455 2.105455 8741.727273
Japan 154.533333 118.533333 1630.066667 244.600000 3899.333333 3.801796e+07 105853.666667 4888.066667 0.666667 300.866667 4.627347e+08 1997.733333 338.733333 6.893333 1.951333 8390.333333
Mexico 76.125000 116.375000 64.500000 192.250000 423.750000 1.028106e+07 40112.500000 1308.875000 0.375000 202.125000 6.139847e+06 2006.750000 231.500000 7.337500 2.037500 5085.500000
Netherlands 132.000000 123.333333 245.000000 42.000000 729.333333 1.884888e+06 25969.333333 952.333333 1.000000 112.333333 9.833333e+06 2003.666667 140.000000 7.566667 2.183333 229.666667
New Line 62.000000 104.000000 23.000000 591.000000 752.000000 6.712451e+06 4102.000000 3133.000000 0.000000 89.000000 9.000000e+07 2001.000000 631.000000 4.400000 1.850000 53.000000
New Zealand 239.454545 144.181818 43.363636 225.545455 6102.090909 1.180145e+08 250762.545455 7609.000000 0.818182 1357.909091 9.572727e+07 2004.272727 928.818182 7.481818 2.259091 8818.181818
Norway 228.000000 95.750000 45.000000 14.500000 116.750000 4.511372e+05 50075.500000 175.000000 0.750000 153.750000 1.662500e+07 2007.750000 23.250000 7.150000 1.985000 21000.000000
Official site 135.000000 117.000000 19.000000 461.000000 3000.000000 2.021892e+07 14814.000000 4204.000000 4.000000 114.000000 1.500000e+07 2010.000000 646.000000 6.300000 2.350000 0.000000
Peru 38.000000 110.000000 49.000000 20.000000 13000.000000 5.736258e+07 50148.000000 13331.000000 2.000000 116.000000 4.500000e+07 1994.000000 279.000000 5.400000 1.850000 0.000000
Poland 25.000000 101.000000 9.000000 201.000000 973.000000 9.789080e+05 4057.000000 2306.000000 0.000000 90.000000 2.400000e+06 2006.000000 872.000000 5.100000 2.350000 250.000000
Romania 190.500000 100.500000 113.500000 195.000000 565.500000 9.100986e+06 36697.500000 1415.500000 0.000000 193.000000 6.295000e+06 2005.500000 458.500000 6.400000 1.850000 7000.000000
Russia 217.333333 112.333333 126.333333 41.333333 913.666667 4.819260e+06 47993.333333 1235.666667 2.333333 213.000000 1.473333e+07 2008.000000 263.000000 6.466667 2.016667 16000.000000
South Africa 233.333333 109.333333 281.000000 3373.000000 4676.333333 5.358008e+07 209225.666667 12929.666667 1.666667 515.000000 1.900000e+07 2010.333333 3817.000000 7.433333 2.183333 27000.000000
South Korea 211.625000 119.750000 206.875000 245.500000 1995.625000 2.689505e+06 92570.125000 2960.750000 1.500000 301.500000 2.066112e+09 2007.000000 354.250000 6.587500 2.153750 14062.750000
Spain 187.363636 105.318182 1224.000000 254.454545 6203.818182 9.807216e+06 97254.545455 7647.636364 0.863636 246.590909 4.952500e+07 2006.590909 834.272727 6.972727 2.152273 12067.500000
Taiwan 246.000000 112.500000 70.500000 30.500000 551.500000 6.434068e+07 113583.500000 650.500000 2.000000 864.000000 1.500000e+07 2007.500000 62.000000 7.150000 1.860000 0.000000
Thailand 79.750000 154.250000 18.250000 174.500000 712.250000 3.115498e+06 15418.500000 1293.250000 2.000000 92.750000 2.272500e+08 2007.000000 263.500000 6.400000 2.100000 31.000000
UK 184.485893 113.068966 298.473354 571.639498 6307.557994 3.631180e+07 102879.583072 9128.021944 1.297806 345.733542 3.140799e+07 2001.614420 1553.670846 6.858307 2.151066 10424.003135
USA 166.014357 109.665109 924.865442 844.174958 8304.965275 5.847581e+07 109912.472788 12439.639399 1.413356 340.307846 4.085313e+07 2002.973289 2202.956594 6.387379 2.101329 9455.712521
West Germany 96.000000 293.000000 249.000000 18.000000 362.000000 1.143313e+07 168203.000000 469.000000 0.000000 426.000000 1.400000e+07 1981.000000 21.000000 8.400000 1.850000 11000.000000
In [75]:
movies.groupby(['country','content_rating']).sum()
num_critic_for_reviews duration director_facebook_likes actor_3_facebook_likes actor_1_facebook_likes gross num_voted_users cast_total_facebook_likes facenumber_in_poster num_user_for_reviews budget title_year actor_2_facebook_likes imdb_score aspect_ratio movie_facebook_likes
country content_rating
Afghanistan PG-13 105.0 83.0 6.0 0.0 30.0 1.127331e+06 7559 30 1.0 77.0 4.600000e+04 2003.0 0.0 7.4 1.85 0
Argentina R 434.0 349.0 272.0 60.0 1995.0 2.169281e+07 172766 2258 0.0 393.0 4.900000e+06 6013.0 115.0 22.8 6.05 33057
Aruba R 67.0 91.0 85.0 105.0 635.0 1.007614e+07 11512 1352 0.0 141.0 3.500000e+07 1998.0 316.0 4.8 2.35 471
Australia G 140.0 188.0 858.0 435.0 1405.0 8.491800e+07 119303 3706 0.0 398.0 1.100000e+08 3993.0 1339.0 12.6 3.70 5964
PG 913.0 770.0 1085.0 4084.0 62680.0 5.085241e+08 400502 92753 2.0 1240.0 3.073500e+08 16020.0 20639.0 48.4 17.80 65343
PG-13 1890.0 1153.0 3952.0 2537.0 87723.0 6.369501e+08 1146478 117773 21.0 2789.0 4.781055e+08 20013.0 22928.0 65.9 22.02 245790
R 3289.0 1936.0 3295.0 6791.0 83103.0 4.524666e+08 1730245 136954 17.0 7545.0 5.795000e+08 36054.0 36653.0 117.7 38.28 245718
Unrated 51.0 85.0 0.0 209.0 945.0 2.651070e+05 4617 2282 1.0 93.0 1.500000e+06 2000.0 774.0 6.3 1.85 614
Belgium R 167.0 109.0 93.0 521.0 31000.0 1.357042e+06 53977 35561 1.0 125.0 1.500000e+07 2011.0 3000.0 7.1 2.35 14000
Brazil R 538.0 475.0 835.0 70.0 1765.0 1.354261e+07 650820 2120 2.0 1139.0 1.420000e+07 8022.0 131.0 32.7 8.40 39000
Unrated 70.0 106.0 19.0 9.0 585.0 2.026200e+04 1738 629 2.0 10.0 4.000000e+06 2014.0 29.0 6.1 2.35 278
Canada G 24.0 76.0 9.0 47.0 595.0 1.114452e+07 2724 1139 0.0 53.0 1.500000e+07 1998.0 417.0 2.8 1.85 436
Not Rated 450.0 181.0 108.0 161.0 1107.0 7.064800e+05 59707 1970 4.0 372.0 4.500000e+06 4019.0 422.0 12.8 4.70 37000
PG 354.0 397.0 252.0 2517.0 29741.0 2.594858e+08 108750 42865 1.0 422.0 1.455000e+08 8030.0 5307.0 23.4 8.40 0
PG-13 2914.0 1950.0 3013.0 6055.0 105200.0 8.297802e+08 1527709 130677 23.0 6380.0 7.104000e+08 38112.0 10031.0 112.8 40.65 117987
R 4629.0 3655.0 6085.0 8633.0 93381.0 4.742941e+08 1481091 126740 43.0 9369.0 4.887900e+08 70100.0 14084.0 224.7 72.68 84939
Chile PG-13 120.0 127.0 36.0 399.0 562.0 1.218864e+07 21098 2230 7.0 56.0 2.600000e+07 2015.0 499.0 6.9 2.35 0
China PG-13 1587.0 857.0 3082.0 2311.0 24244.0 2.589121e+08 779455 41550 11.0 3027.0 4.144000e+08 14021.0 13187.0 51.7 16.45 47445
R 765.0 766.0 1856.0 713.0 25681.0 7.521289e+06 136722 28397 11.0 639.0 7.876320e+08 12060.0 1584.0 41.8 14.10 13000
Colombia R 155.0 101.0 13.0 6.0 280.0 6.517198e+06 30474 308 0.0 172.0 3.000000e+06 2004.0 11.0 7.5 1.85 0
Czech Republic R 402.0 351.0 184.0 809.0 27830.0 3.884316e+06 76741 30301 4.0 528.0 1.464500e+08 6020.0 958.0 20.9 6.55 19000
Denmark Not Rated 220.0 184.0 3028.0 340.0 3573.0 2.193140e+05 32893 5309 2.0 125.0 5.920000e+07 4013.0 966.0 14.7 4.70 1000
R 1553.0 701.0 6747.0 2679.0 45317.0 1.244667e+07 539146 57670 5.0 2322.0 6.510000e+07 12031.0 6942.0 43.6 12.58 145561
Finland Not Rated 205.0 93.0 592.0 36.0 232.0 6.117090e+05 15267 391 1.0 41.0 3.850000e+06 2011.0 67.0 7.2 1.85 0
France G 425.0 296.0 73.0 242.0 11941.0 1.030173e+08 117347 12721 0.0 787.0 5.800000e+07 6013.0 433.0 23.4 6.55 0
NC-17 181.0 131.0 719.0 683.0 16000.0 2.030296e+07 49874 18913 0.0 450.0 4.500000e+07 1995.0 893.0 4.6 2.35 0
Not Rated 731.0 459.0 1007.0 330.0 1560.0 1.219355e+06 113952 3141 6.0 442.0 5.050000e+07 8040.0 845.0 28.2 8.90 34000
PG 815.0 726.0 730.0 6672.0 19949.0 7.502227e+07 292498 40954 4.0 1436.0 2.987600e+08 14062.0 12672.0 50.9 15.45 55941
PG-13 6008.0 3261.0 4625.0 23421.0 277772.0 8.690922e+08 2705334 360794 30.0 7795.0 7.944300e+08 62212.0 36671.0 207.1 68.14 278189
R 7974.0 6001.0 33227.0 31956.0 252143.0 8.660565e+08 3918793 386565 61.0 14147.0 1.825204e+09 104184.0 73240.0 350.1 112.01 300118
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
South Korea R 1596.0 751.0 1603.0 1044.0 14178.0 1.039607e+07 718143 17517 7.0 2031.0 1.648050e+10 12039.0 1825.0 45.5 13.10 112000
Spain Not Rated 121.0 97.0 4.0 577.0 13000.0 4.344170e+05 8867 15093 1.0 65.0 4.600000e+06 2007.0 1000.0 5.9 1.85 0
PG 156.0 91.0 2.0 480.0 12000.0 4.219406e+07 41259 22668 1.0 72.0 7.000000e+07 2009.0 10000.0 6.1 2.35 0
PG-13 1402.0 646.0 23313.0 1601.0 27108.0 1.038690e+08 715363 32679 5.0 1429.0 8.235000e+08 12044.0 2101.0 43.7 12.75 148539
R 2443.0 1483.0 3609.0 2940.0 84376.0 6.926122e+07 1374111 97808 12.0 3859.0 1.914500e+08 28085.0 5253.0 97.7 30.40 116946
Taiwan Not Rated 205.0 105.0 141.0 56.0 1000.0 6.135560e+05 9427 1172 1.0 87.0 1.500000e+07 2015.0 103.0 6.4 1.37 0
PG-13 287.0 120.0 0.0 5.0 103.0 1.280678e+08 217740 129 3.0 1641.0 1.500000e+07 2000.0 21.0 7.9 2.35 0
Thailand R 319.0 617.0 73.0 698.0 2849.0 1.246199e+07 61674 5173 8.0 371.0 9.090000e+08 8028.0 1054.0 25.6 8.40 124
UK Approved 951.0 920.0 756.0 2251.0 4307.0 2.569320e+08 555813 12861 10.0 2118.0 5.627500e+07 13748.0 2780.0 51.2 12.76 5000
G 1024.0 907.0 270.0 2344.0 14796.0 3.383162e+08 747798 26575 4.0 2913.0 2.640000e+08 17943.0 5174.0 58.1 19.00 25855
GP 120.0 120.0 82.0 175.0 244.0 4.380000e+07 74249 1105 2.0 276.0 7.200000e+06 1971.0 177.0 6.7 2.35 0
M 143.0 142.0 13.0 244.0 803.0 2.280000e+07 59941 1769 2.0 452.0 7.000000e+06 1969.0 314.0 6.8 2.35 0
NC-17 486.0 101.0 0.0 726.0 13000.0 4.000304e+06 145395 15230 0.0 375.0 6.500000e+06 2011.0 898.0 7.3 2.35 23000
Not Rated 646.0 288.0 395.0 313.0 1023.0 9.804650e+05 69432 1929 1.0 384.0 1.620000e+06 6034.0 335.0 22.2 6.05 20000
PG 7434.0 7003.0 28586.0 49840.0 297243.0 3.290117e+09 4384936 520627 85.0 15264.0 2.577730e+09 117735.0 120526.0 391.4 126.43 292213
PG-13 20450.0 10544.0 26648.0 63331.0 644202.0 4.938317e+09 10614210 936105 106.0 39838.0 4.451200e+09 180616.0 148389.0 617.5 200.51 1491990
R 27370.0 15826.0 38108.0 62182.0 1034806.0 2.666908e+09 16038026 1390691 204.0 48383.0 2.643124e+09 292497.0 215797.0 1011.5 310.88 1456199
Unrated 227.0 218.0 355.0 947.0 1687.0 2.129456e+07 128787 4947 0.0 286.0 4.500000e+06 3991.0 1231.0 15.1 3.51 11000
USA Approved 765.0 1092.0 1093.0 1721.0 4370.0 5.007964e+08 454031 12924 8.0 1519.0 4.531900e+07 17569.0 2409.0 66.9 15.82 2075
G 8384.0 6753.0 8015.0 31586.0 292826.0 6.907536e+09 8241337 441011 40.0 15026.0 3.913677e+09 137878.0 45673.0 447.5 132.98 333660
M 130.0 110.0 131.0 399.0 640.0 1.023089e+08 152089 2169 1.0 309.0 6.000000e+06 1969.0 566.0 8.1 2.35 0
NC-17 319.0 386.0 471.0 553.0 1321.0 2.557957e+06 61312 3009 3.0 524.0 3.710000e+06 7975.0 747.0 26.3 6.92 1012
Not Rated 1232.0 1476.0 3774.0 2589.0 19173.0 9.542456e+07 389655 29943 21.0 1583.0 2.918385e+07 27841.0 3942.0 94.8 26.58 14918
PG 63802.0 48236.0 415593.0 378555.0 3615498.0 3.867894e+10 41963344 5376497 580.0 116652.0 2.550920e+10 931026.0 871888.0 2903.9 952.42 3314453
PG-13 200202.0 122824.0 1013635.0 1201923.0 10308520.0 8.031554e+10 134336105 15776890 1786.0 429679.0 5.945259e+10 2199817.0 2823663.0 6801.3 2351.02 13011943
Passed 270.0 309.0 177.0 444.0 1049.0 3.301061e+07 299588 3349 11.0 694.0 6.947785e+06 5818.0 693.0 21.4 4.11 14623
R 219784.0 145086.0 1325230.0 907110.0 10541255.0 4.820469e+10 142580636 15506309 1755.0 448795.0 3.333031e+10 2625317.0 2842760.0 8610.3 2746.00 11602158
Unrated 824.0 1349.0 1151.0 1140.0 5022.0 1.077933e+08 144518 10485 14.0 1147.0 2.339122e+07 25839.0 2035.0 91.2 37.63 3091
X 1501.0 826.0 702.0 2284.0 83697.0 1.864617e+08 565241 94134 14.0 3294.0 3.480000e+07 17856.0 3479.0 58.5 17.65 21926
West Germany R 96.0 293.0 249.0 18.0 362.0 1.143313e+07 168203 469 0.0 426.0 1.400000e+07 1981.0 21.0 8.4 1.85 11000

115 rows × 16 columns

In [76]:
pd.pivot_table(movies, values='budget', index=['country'], columns=['content_rating'], aggfunc = np.sum)
content_rating Approved G GP M NC-17 Not Rated PG PG-13 Passed R Unrated X
country
Afghanistan NaN NaN NaN NaN NaN NaN NaN 4.600000e+04 NaN NaN NaN NaN
Argentina NaN NaN NaN NaN NaN NaN NaN NaN NaN 4.900000e+06 NaN NaN
Aruba NaN NaN NaN NaN NaN NaN NaN NaN NaN 3.500000e+07 NaN NaN
Australia NaN 1.100000e+08 NaN NaN NaN NaN 3.073500e+08 4.781055e+08 NaN 5.795000e+08 1500000.0 NaN
Belgium NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.500000e+07 NaN NaN
Brazil NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.420000e+07 4000000.0 NaN
Canada NaN 1.500000e+07 NaN NaN NaN 4500000.0 1.455000e+08 7.104000e+08 NaN 4.887900e+08 NaN NaN
Chile NaN NaN NaN NaN NaN NaN NaN 2.600000e+07 NaN NaN NaN NaN
China NaN NaN NaN NaN NaN NaN NaN 4.144000e+08 NaN 7.876320e+08 NaN NaN
Colombia NaN NaN NaN NaN NaN NaN NaN NaN NaN 3.000000e+06 NaN NaN
Czech Republic NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.464500e+08 NaN NaN
Denmark NaN NaN NaN NaN NaN 59200000.0 NaN NaN NaN 6.510000e+07 NaN NaN
Finland NaN NaN NaN NaN NaN 3850000.0 NaN NaN NaN NaN NaN NaN
France NaN 5.800000e+07 NaN NaN 45000000.0 50500000.0 2.987600e+08 7.944300e+08 NaN 1.825204e+09 106600000.0 NaN
Georgia NaN NaN NaN NaN NaN NaN NaN NaN NaN 2.000000e+07 NaN NaN
Germany NaN 3.000000e+07 NaN NaN NaN 6000000.0 5.530000e+08 7.560000e+08 NaN 1.555900e+09 NaN NaN
Greece NaN NaN NaN NaN NaN NaN NaN 1.800000e+07 NaN NaN NaN NaN
Hong Kong NaN NaN NaN NaN NaN NaN 1.090000e+08 1.256000e+08 NaN 1.165000e+08 NaN NaN
Hungary NaN NaN NaN NaN NaN NaN 2.000000e+07 NaN NaN 2.500000e+09 NaN NaN
Iceland NaN NaN NaN NaN NaN NaN NaN NaN NaN 3.800000e+06 NaN NaN
India NaN NaN NaN NaN NaN 7217600.0 1.000000e+06 1.200000e+07 NaN 7.070000e+08 NaN NaN
Indonesia NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.100000e+06 NaN NaN
Iran NaN NaN NaN NaN NaN 10000.0 1.418000e+07 5.000000e+05 NaN NaN NaN NaN
Ireland NaN NaN NaN NaN NaN NaN NaN 4.000000e+07 NaN 5.918000e+07 NaN NaN
Israel NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.500000e+06 NaN NaN
Italy 1200000.0 NaN NaN NaN NaN 9200000.0 1.200000e+07 NaN NaN 6.770000e+07 50000000.0 400000.0
Japan NaN 5.900000e+07 NaN NaN NaN NaN 1.118000e+09 4.589520e+09 NaN 1.167000e+09 7500000.0 NaN
Mexico NaN NaN NaN NaN NaN NaN NaN 2.900000e+07 NaN 2.011878e+07 NaN NaN
Netherlands NaN NaN NaN NaN NaN NaN NaN NaN NaN 2.950000e+07 NaN NaN
New Line NaN NaN NaN NaN NaN NaN NaN NaN NaN 9.000000e+07 NaN NaN
New Zealand NaN NaN NaN NaN NaN NaN 1.000000e+06 9.950000e+08 NaN 5.700000e+07 NaN NaN
Norway NaN NaN NaN NaN NaN 800000.0 NaN 1.990000e+07 NaN 4.580000e+07 NaN NaN
Official site NaN NaN NaN NaN NaN NaN NaN 1.500000e+07 NaN NaN NaN NaN
Peru NaN NaN NaN NaN NaN NaN NaN NaN NaN 4.500000e+07 NaN NaN
Poland NaN NaN NaN NaN NaN NaN NaN 2.400000e+06 NaN NaN NaN NaN
Romania NaN NaN NaN NaN NaN 590000.0 NaN NaN NaN 1.200000e+07 NaN NaN
Russia NaN NaN NaN NaN NaN NaN NaN NaN NaN 4.420000e+07 NaN NaN
South Africa NaN NaN NaN NaN NaN NaN NaN 2.500000e+07 NaN 3.200000e+07 NaN NaN
South Korea NaN NaN NaN NaN NaN NaN NaN 4.840000e+07 NaN 1.648050e+10 NaN NaN
Spain NaN NaN NaN NaN NaN 4600000.0 7.000000e+07 8.235000e+08 NaN 1.914500e+08 NaN NaN
Taiwan NaN NaN NaN NaN NaN 15000000.0 NaN 1.500000e+07 NaN NaN NaN NaN
Thailand NaN NaN NaN NaN NaN NaN NaN NaN NaN 9.090000e+08 NaN NaN
UK 56275000.0 2.640000e+08 7200000.0 7000000.0 6500000.0 1620000.0 2.577730e+09 4.451200e+09 NaN 2.643124e+09 4500000.0 NaN
USA 45319000.0 3.913677e+09 NaN 6000000.0 3710000.0 29183848.0 2.550920e+10 5.945259e+10 6947785.0 3.333031e+10 23391218.0 34800000.0
West Germany NaN NaN NaN NaN NaN NaN NaN NaN NaN 1.400000e+07 NaN NaN
In [78]:
cities = pd.read_csv('Cities.csv', sep = ';')
In [79]:
cities.head()
№ Город Регион Федеральный округ Население Основание
0 602 Москва Москва Центральный 11514330 1147
1 823 Санкт-Петербург Санкт-Петербург Северо-Западный 4848742 1703
2 669 Новосибирск Новосибирская область Сибирский 1498921 1893
3 275 Екатеринбург Свердловская область Уральский 1377738 1723
4 644 Нижний Новгород Нижегородская область Приволжский 1250615 1221
In [80]:
plt.hist(cities['Население'], bins = 50) plt.annotate('Moscow', xy=(cities.ix[cities['Город'] == 'Москва','Население'], 1), xytext=(1.05e7, 500), arrowprops=dict(facecolor='green', shrink=0.1)) plt.annotate('Saint Petersburg', xy=(cities.ix[cities['Город'] == 'Санкт-Петербург','Население'], 1), xytext=(0.4e7, 500), arrowprops=dict(facecolor='green', shrink=0.1)) plt.show()
In [81]:
print round(np.mean(cities['Население'])) print round(np.median(cities['Население']))
88724.0 26875.0

Медиана устойчива к выбросам, в отличие от среднего арифметического.
Поэтому в данном примере медиана лучше характеризует "типичный" город с точки зрения населения.