Библиотека Pandas

Data Frame

In [1]:
import pandas as pd
In [2]:
#создание DataFrame по столбцам с помощью словарей
frame = pd.DataFrame({'numbers':range(10), 'chars':['a']*10})
In [3]:
frame
Out[3]:
chars numbers
0 a 0
1 a 1
2 a 2
3 a 3
4 a 4
5 a 5
6 a 6
7 a 7
8 a 8
9 a 9
In [4]:
#создание DataFrame с помощью чтения данных из файла
frame = pd.read_csv('dataset.tsv', header=0, sep='\t')
In [5]:
frame
Out[5]:
Name Birth City Position
0 Иванов А.А. 22.03.1980 Москва NaN
1 Сорокин И.В. 07.08.1965 Волгоград инженер
2 Белов М.М. 13.02.1980 Ростов менеджер
3 Мельникова Д.С. 15.04.1985 Ростов NaN
4 Рыбина Е.П. 19.11.1985 Москва инженер
5 Костров С.О. 31.05.1985 Москва стажер
In [6]:
frame.columns
Out[6]:
Index(['Name', 'Birth', 'City', 'Position'], dtype='object')
In [7]:
frame.shape
Out[7]:
(6, 4)
In [8]:
new_line = {'Name':'Perov', 'Birth':'22.03.1990', 'City':'Penza'}
In [9]:
#добавление строки в DataFrame
frame.append(new_line, ignore_index=True)
Out[9]:
Name Birth City Position
0 Иванов А.А. 22.03.1980 Москва NaN
1 Сорокин И.В. 07.08.1965 Волгоград инженер
2 Белов М.М. 13.02.1980 Ростов менеджер
3 Мельникова Д.С. 15.04.1985 Ростов NaN
4 Рыбина Е.П. 19.11.1985 Москва инженер
5 Костров С.О. 31.05.1985 Москва стажер
6 Perov 22.03.1990 Penza NaN
In [10]:
#добавление строки в DataFrame
frame = frame.append(new_line, ignore_index=True)
In [11]:
frame
Out[11]:
Name Birth City Position
0 Иванов А.А. 22.03.1980 Москва NaN
1 Сорокин И.В. 07.08.1965 Волгоград инженер
2 Белов М.М. 13.02.1980 Ростов менеджер
3 Мельникова Д.С. 15.04.1985 Ростов NaN
4 Рыбина Е.П. 19.11.1985 Москва инженер
5 Костров С.О. 31.05.1985 Москва стажер
6 Perov 22.03.1990 Penza NaN
In [12]:
#добавление столбца в DataFrame
frame['IsStudent'] = [False]*5 + [True]*2
In [13]:
frame
Out[13]:
Name Birth City Position IsStudent
0 Иванов А.А. 22.03.1980 Москва NaN False
1 Сорокин И.В. 07.08.1965 Волгоград инженер False
2 Белов М.М. 13.02.1980 Ростов менеджер False
3 Мельникова Д.С. 15.04.1985 Ростов NaN False
4 Рыбина Е.П. 19.11.1985 Москва инженер False
5 Костров С.О. 31.05.1985 Москва стажер True
6 Perov 22.03.1990 Penza NaN True
In [14]:
#удаление строк DataFrame
frame.drop([5,6], axis=0)
Out[14]:
Name Birth City Position IsStudent
0 Иванов А.А. 22.03.1980 Москва NaN False
1 Сорокин И.В. 07.08.1965 Волгоград инженер False
2 Белов М.М. 13.02.1980 Ростов менеджер False
3 Мельникова Д.С. 15.04.1985 Ростов NaN False
4 Рыбина Е.П. 19.11.1985 Москва инженер False
In [15]:
frame
Out[15]:
Name Birth City Position IsStudent
0 Иванов А.А. 22.03.1980 Москва NaN False
1 Сорокин И.В. 07.08.1965 Волгоград инженер False
2 Белов М.М. 13.02.1980 Ростов менеджер False
3 Мельникова Д.С. 15.04.1985 Ростов NaN False
4 Рыбина Е.П. 19.11.1985 Москва инженер False
5 Костров С.О. 31.05.1985 Москва стажер True
6 Perov 22.03.1990 Penza NaN True
In [30]:
#удаление строк DataFrame (inplace)
frame.drop([1,2], axis=0, inplace=True)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-30-44ea90e9650c> in <module>()
      1 #удаление строк DataFrame (inplace)
----> 2 frame.drop([1,2], axis=0, inplace=True)

/srv/paws/lib/python3.6/site-packages/pandas/core/generic.py in drop(self, labels, axis, index, columns, level, inplace, errors)
   2528         for axis, labels in axes.items():
   2529             if labels is not None:
-> 2530                 obj = obj._drop_axis(labels, axis, level=level, errors=errors)
   2531 
   2532         if inplace:

/srv/paws/lib/python3.6/site-packages/pandas/core/generic.py in _drop_axis(self, labels, axis, level, errors)
   2560                 new_axis = axis.drop(labels, level=level, errors=errors)
   2561             else:
-> 2562                 new_axis = axis.drop(labels, errors=errors)
   2563             dropped = self.reindex(**{axis_name: new_axis})
   2564             try:

/srv/paws/lib/python3.6/site-packages/pandas/core/indexes/base.py in drop(self, labels, errors)
   3742             if errors != 'ignore':
   3743                 raise ValueError('labels %s not contained in axis' %
-> 3744                                  labels[mask])
   3745             indexer = indexer[~mask]
   3746         return self.delete(indexer)

ValueError: labels [1 2] not contained in axis
In [31]:
frame
Out[31]:
Name Birth Position
0 Иванов А.А. 22.03.1980 NaN
3 Мельникова Д.С. 15.04.1985 NaN
4 Рыбина Е.П. 19.11.1985 инженер
In [32]:
#удаление столбца DataFrame (inplace)
frame.drop('City', axis=1, inplace=True)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-32-58c2adeb285d> in <module>()
      1 #удаление столбца DataFrame (inplace)
----> 2 frame.drop('City', axis=1, inplace=True)

/srv/paws/lib/python3.6/site-packages/pandas/core/generic.py in drop(self, labels, axis, index, columns, level, inplace, errors)
   2528         for axis, labels in axes.items():
   2529             if labels is not None:
-> 2530                 obj = obj._drop_axis(labels, axis, level=level, errors=errors)
   2531 
   2532         if inplace:

/srv/paws/lib/python3.6/site-packages/pandas/core/generic.py in _drop_axis(self, labels, axis, level, errors)
   2560                 new_axis = axis.drop(labels, level=level, errors=errors)
   2561             else:
-> 2562                 new_axis = axis.drop(labels, errors=errors)
   2563             dropped = self.reindex(**{axis_name: new_axis})
   2564             try:

/srv/paws/lib/python3.6/site-packages/pandas/core/indexes/base.py in drop(self, labels, errors)
   3742             if errors != 'ignore':
   3743                 raise ValueError('labels %s not contained in axis' %
-> 3744                                  labels[mask])
   3745             indexer = indexer[~mask]
   3746         return self.delete(indexer)

ValueError: labels ['City'] not contained in axis
In [26]:
frame
Out[26]:
Name Birth Position
0 Иванов А.А. 22.03.1980 NaN
1 Сорокин И.В. 07.08.1965 инженер
2 Белов М.М. 13.02.1980 менеджер
3 Мельникова Д.С. 15.04.1985 NaN
4 Рыбина Е.П. 19.11.1985 инженер
In [20]:
#запись DataFrame в файл
frame.to_csv('updated_dataset.csv', sep=',', header=True, index=False)
In [21]:
!cat updated_dataset.csv
Name,Birth,City,Position
Иванов А.А.,22.03.1980,Москва,
Сорокин И.В.,07.08.1965,Волгоград,инженер
Белов М.М.,13.02.1980,Ростов,менеджер
Мельникова Д.С.,15.04.1985,Ростов,
Рыбина Е.П.,19.11.1985,Москва,инженер
In [22]:
#аналог команды для пользователей Windows
!more updated_dataset.csv
Name,Birth,City,Position
Иванов А.А.,22.03.1980,Москва,
Сорокин И.В.,07.08.1965,Волгоград,инженер
Белов М.М.,13.02.1980,Ростов,менеджер
Мельникова Д.С.,15.04.1985,Ростов,
Рыбина Е.П.,19.11.1985,Москва,инженер
In [2]:
import numpy
In [3]:
a = numpy.array([6, 3, -5])
b = numpy.array([-1, 0, 7])
In [4]:
import scipy
In [5]:
scipy.spatial.distance.cdist(a[numpy.newaxis, :], b[numpy.newaxis, :], metric='euclidean')
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-5-e9c3ac7e4b7d> in <module>()
----> 1 scipy.spatial.distance.cdist(a[numpy.newaxis, :], b[numpy.newaxis, :], metric='euclidean')

AttributeError: module 'scipy' has no attribute 'spatial'
In [6]:
numpy.linalg.norm(a, ord=2) - np.linalg.norm(b, ord=2)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-6-573d012dd898> in <module>()
----> 1 numpy.linalg.norm(a, ord=2) - np.linalg.norm(b, ord=2)

NameError: name 'np' is not defined
In [7]:
numpy.linalg.norm(a, ord=2) - numpy.linalg.norm(b, ord=2)
Out[7]:
1.2955324534752801
In [9]:
from scipy import spatial
In [13]:
spatial.distance.cdist(b, a, metric='euclidean')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-13-c699a550f2f1> in <module>()
----> 1 spatial.distance.cdist(b, a, metric='euclidean')

/srv/paws/lib/python3.6/site-packages/scipy/spatial/distance.py in cdist(XA, XB, metric, *args, **kwargs)
   2367 
   2368     if len(s) != 2:
-> 2369         raise ValueError('XA must be a 2-dimensional array.')
   2370     if len(sB) != 2:
   2371         raise ValueError('XB must be a 2-dimensional array.')

ValueError: XA must be a 2-dimensional array.
In [11]:
spatial.distance.cdist(a[:, numpy.newaxis], b[:, numpy.newaxis], metric='euclidean')
Out[11]:
array([[ 7.,  6.,  1.],
       [ 4.,  3.,  4.],
       [ 4.,  5., 12.]])
In [12]:
spatial.distance.cdist(a[numpy.newaxis, :], b[numpy.newaxis, :], metric='euclidean')
Out[12]:
array([[14.2126704]])
In [14]:
a * b
Out[14]:
array([ -6,   0, -35])
In [15]:
numpy.dot(a, b)
Out[15]:
-41
In [16]:
b.dot(a)
Out[16]:
-41
In [17]:
numpy.linalg.norm(a)
Out[17]:
8.366600265340756
In [18]:
numpy.dot(a, b) / numpy.linalg.norm(a) / numpy.linalg.norm(b)
Out[18]:
-0.6930264888773836
In [19]:
a[numpy.newaxis, :]
Out[19]:
array([[ 6,  3, -5]])
In [20]:
a[:, numpy.newaxis]
Out[20]:
array([[ 6],
       [ 3],
       [-5]])
In [26]:
a.reshape((5, 1))
Out[26]:
array([[ 8],
       [10],
       [-1],
       [ 0],
       [ 0]])
In [ ]:
 
In [ ]:
 
In [24]:
a = numpy.array([8, 10, -1, 0, 0])
In [ ]:
 
In [ ]:
 
In [ ]: