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 '
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_1y
= df.column_2data
= DataFrame df