DATA SCIENCE

Python

Libraries

Scipy

linalg

NUMPY

Матрицы

array( list, dtype )

dot
Скалярое произведение,
умножение матриц

random.rand()
random.randn()

linalg.solve(A, b)
решение СЛАУ

linalg.svd(A)
сингулярное разложение матрицы А
U, D, V = linalg.svd(A)

Matplotlib 💹

data visualization

pylab

arange(start, stop, step)


linspace( start, stop, step)

plot(x, y, label="...", "r-" )


A few graphs:
plot(x, y, x, z)

interpolate

axis(x0, xn, y0, yn)

interp1d

optimize

Оптимизация

поиск точек экстремума

minimize

Math

Linear Algebra

Матанализ

Методы

array.dtype

array.shape
(number of rows, number of columns)

array.ndim

linalg.norm( vector, ord)

Евклидова норма
(через скалярное произведение):
ord = 2

Манхэттенское расстояние/норма
(сумма модулей координат) :
ord = 1

Альтернатива:
vector1.dot( vector2 )

linalg.norm( vector ) = linalg.norm( vector, ord=2)

linalg.norm( vector ) = math.sqrt( np.dot(a, a) )

array.reshape(n_new, m_new)
изменить размерность матрицы

Matrix types

np.zeroes( (n, m) )
np.ones( (n, m) )

np.eye(число)

array.T
Транспонирование матрицы

Альтернатива:
np.transpose(array)

-Matrix operations-

Обратная матрица к матрице А:
linalg.inv(A)

linalg.det(array)
определитель матрицы

ЛП, ЛО, матрица

Важное

  • detA, интерпретация как объем фигуры
  • rankA как избыточность и ЛЗ/ЛН.
  • ЛЗ набор, ЛН.
  • базис ЛП
  • скалярное, векторное, смешанное
    произведения векторов.
  • собственные векторы, собственные значения.

Нормированное ЛП,
норма, метрика

np.linalg.matrix_rank(A)
ранг матрицы А

array.shape[0]
number of rows

array.shape[1]
number of columns

Псевдорешение

w, v = np.linalg.eig(A)
поиск собственных значений и векторов матрицы А


w = одноимённый массив собств. чисел.
v = двумерный массив собств. векторов.
собств число w[0] = собств вектору v[0].

np.random.rand()
np.random.rand(10)
np.random.rans(10, 5)

?
%timeit

Оптимизировать функцию =
уменьшить значение функции

Data visualization

Why we need

the data visualization?


  • interpritate data better;
  • our brain thinks in concrete object,
    so visualization makes data memorable;
  • we get a lotta informations through eyes;
  • see correlations;
  • see cause-effect relations

Tools:


  • Matplotlib
  • Seaborn
  • Bokeh
  • Tableau

Kinds of Charts

Bar Plot / Bar Chart

compare numerical data
over some groups


Example: compare quantity of students
who have passed different exams in this year.


Axe Y = just values of X

Grouped Bar Plot

few numerical data columns
for every group


Example: compare marks & attendance
across school subjects. Subject 1 = group 1.


We have several groups. And these groups have
several subgroups.

Stacked Bar Plot

Histogram


Axe Y = frequency

HeatMap

Pie Chart

compare data as a fraction of the whole


Example: we might find the % of students
who passed the exam with mark 5.

Seaborn: HeatMap

Python
pyplot.bar(

pyplot

bar, barh

📊


plot(kind='bar')



bar(shoes type, customer's wish to buy)

show( )

Описание

Прочее

legend( )
выведет легенду, сформированную из labels
legend( [...], loc )

xlabel( '...', color ='...', fontsize, fontstyle, fontweight)
ylabel( '...' )

аргументы

align = 'center' or 'edge'

width=1
сколько единиц влево и вправо
насколько широким должна быть колонна


bottom = 20

color="red"

x array

Pandas

reading & writing data
creating dataframe (data array)

Data Structure

DataFrame

read_csv( 'file.tsv',
header=0,
sep='\t or , ',
nrows = X,
usecols = ['...', '...' ],
index_col = '...' )

Операции

Добавление

Adding a column:


  • sp500[ 'Rounded column' ] = sp500copy.Price.round( )


  • DataFrame.insert(index, column name, column values)

База

Циклы

if
else
elif

Логические операторы

Типы данных

Массивы

list

tuple

dict

set

Box Plot
иллюстрация мер центральной
тенденции и мер размаха

Случайность

  • ТерВер
  • Мат.статистика
  • Случайное событие.
  • Probability distribition.
  • Случайная величина: ДСВ, НСВ.
  • Характеристики СВ:
    меры центральной тендеции,
    меры размаха.
  • ГС и выбока

Scatter Chart

обычный график экспериментальных значений


представление связи между
независимым фактором X и результатом Y

Bubble Chart

представление значений три величин X, Y, Z
и их зависимости в 2мерной диаграмме

разновидность точечной диаграммы, в которой точки данных заменены пузырьками, причем их размер служит дополнительным (третьим) измерением данных. На пузырьковой диаграмме, как и на точечной, нет оси категорий — и горизонтальная, и вертикальная оси являются осями значений. В дополнение к значениям X и значениям Y, наносимым на точечную диаграмму, на пузырьковой диаграмме показаны также значения Z (размер).

stats

hist

norm
нормальное распределение


norm(Ex, sigmaX)
Ex = ожидаемое значение.
sigmaX = корень дисперсии

Методы:


  • norm.cdf(number)
    Значение нормально распределенной СВ
    в точке number.
    cdf =... distribution function

  • norm.pdf(x)
    pdf = probability density fuction

uniform
равномерное распределение


uniform(a, b-a)

legend(loc = 'upper center')
legend.loc

задание легенды, 2 способа:



plot(x, y, label='...')
plot(x, z, label='...')
legend( )



legend( [ 'Sony', 'Microsoft' ] )

plot( legend = False )
отключение легенды

Костемизация

Цвет, маркеры
'b--^'

Толщина
limeweight = lw =3

color = ' r ' = ' #ff0000 '

Graph Line Style



plot(x, y, linestyle = '-')


linestyle= '-' = 'solid'
'--' = 'dashed'
'-.' = 'dashdot'
':' = dotted

DataFrame.columns = ['...', ...]
добавление имен столбцов

Свойства-Методы

кол-во элементов


len(DataFrame)
DataFrame.size
DataFrame.shape

кол-во уникальных элементов


DataFrame.nunique( )

Вывод данных

первые / последние строки


DataFrame.head( )
DataFrame.tail(X),


X = кол-во последних строк

поэлеметный вывод значений по индекс


DataFrame.loc[0], вывод элемента/строки таблицы с индексом =0.
DataFrame.loc[ [0, 3] ] , вывод 0-ой и 3-ий строки

получание исходного индекса по заданному индексу


DataFrame.index.get_loc( 'YHOL' )

срезы данных


DataFrame.iloc[start : stop : step]



DataFrame.iloc[a: ],
вывод всех значений с а-го включительно до последнего


DataFrame.iloc[ :b],
вывод всех значений до b-го значений невключительно


DataFrame.iloc[a: : step],
вывод всех значений с а-го до последнего с шагом step



negative start/stop or step


DataFrame.iloc[-a: ]
вывод а-штук значений в обратном порядке: начиная с последнего


DataFrame.iloc[a: : - 1]
вывод а-штук значений в обратном порядке: начиная с a-го значения

fontstyle =



'normal',
'italic',
'oblique'

fontsize =



'xx-small', 'x-small', 'medium',
'large', 'x-large', 'xx-large'

fontweight =



  • number [0; 1000]
  • special words: 'regular', 'bold', ...

title('...')
graph title

grid() =grid(True)
grid(False)

text(x0, y0, 'some text')

Цвет

facecolor

edgecolor

title,
title_fontsize

вывол конкретного элемента датафрейма:


DataFrame.at[ 'row name', 'column name' ]
DataFrame.iat[ 'row number', 'column number' ]


iat = index at

Фильтрация


result = (Series > 5) & (Series < 25)
result
Series[result]



Series.where( (Series >5) & (Series <25), other = - 1)



(Series > 5).all( ), все элементы строки > 5? True/False
(Series > 5).any( ), есть хотя бы один элемент >5? T/F
(Series > 5).sum( ), кол-во элементов >5

Удаление

  • del Series[index]
  • del DataFrame[ 'column name' ]

после удаления через del
невозможно восстановить данные

popped_column = DataFrame.pop( 'column name' )


после удаления через pop
возможно посмотреть на удалённые данные

df.drop([1, 4]) = df.drop([1, 4], axis=0)
удаление строк 1 и 4


df.drop(['name'], axis=1)
удаление столбца name

edgecolor ='...' ,
linewidth = 4

сортировка

  • DataFrame.sort_index( )


  • DataFrame.sort_values( by = 'Price', ascending=True )
    сортировка по возрастанию

  • DataFrame.sort_values( by = 'Price', ascending=False )
    сортировка по убыванию

  • DataFrame.nsmallest(quantity, digital coloum name)
    вывод n-го числа (задаваемое quantity) наименьших значений числового столбца

  • DataFrame.nlargest(quantity, digital coloum name)

Adding a row
dataframe_name.append( new_line, ignore_index=True)

Поиск
пустых и повторяющихся
значений

Null NaN

Пустые значений таблицы будут True
DataFrame.isnull( )


Непустые значения будут True
~DataFrame.isnull( )

DataFrame.c3.dropna( )
Показать все непустые ячейки столбца с3 таблицы df
пустые ячейки удаляются


dropna() возвращает изменяет копию исходной таблицы



DataFrame.dropna( )= DataFrame.dropna( how = 'any' )
удаляет все строки, в которых есть пустые ячейки


DataFrame.dropna( how = 'all' )
удаляет строки, в которых все ячейки пустые


DataFrame.dropna(how = 'any', axis = 1)
удаляет столбцы с хотя бы одной пустой ячейкой


DataFrame.dropna(thresh = 4)
вывести строки, в которых есть минимум 4 непустые ячейки

Fill the null cells

df.fillna( X )
пустые ячейки заполняются значениями X

Duplicated

  • data.duplicated( )


  • data.drop_dublicates( ) = data.drop_dublicates(keep = 'first')


  • data.drop_dublicates( [ 'a', 'b' ] )


    удаление строк с учётом повторяющихся значений в столицах a, b

series.replace( old values, new values )

series1.map( series2 )
сопоставление двух серий, двух наборов данных

Index operations

Dataframe.reset_index( )


Сброс индексов:
индекс-столбец становится обычным столбом датафрейма

DataFrame.set_index( 'Column name' )


Определение / установка индексов

Kinds

Мульти-индекс

Seaborn

heatmap(data, annot, fmt, cmap,

boxplot(x, y, data)


x = df.column_1
y = df.column_2
data = DataFrame df