從零學python必備知識(三、機器學習庫)(附示例代碼)

(一)、函數+類

從零學python必備知識(一、函數+類)(附示例代碼)

(二)、併發+正則表達式

從零學python必備知識(二)

安裝

使用pip安裝,使用了清華的鏡像速度會快很多:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ***

17、Numpy

numpy是用於高性能科學計算和數據分析,是常用的高級數據分析庫的基礎包。

1)數組與數據類型

根據輸入數據的類型可以自動進行轉換,數據類型比如有:int8,int16,int32,int64,float…
還可以使用numpy實現兩個列表的數學計算,比如相加

import numpy as np
arr1 =np.array([2,3,4])
print(arr1)
print(arr1.dtype)
arr2=np.array([1.2,2.3,3.4])
print(arr2)
print(arr2.dtype)
print(arr1+arr2)

[2 3 4]
int32
[1.2 2.3 3.4]
float64
[3.2 5.3 7.4]

2)數組和標量的計算

標量是有大小沒有方向的

data=[[1,2,3],[4,5,6]]
arr=np.array(data)#轉化爲numpy的二維矩陣
print(arr)
#對矩陣的操作
print(np.zeros(10))#全0,一維
print(np.zeros((3,5)))#全零,2維
print(np.ones((2,3,2)))#全1,3維

在這裏插入圖片描述

3)數組的索引和切片

import numpy as np
arr = np.arange(10)
print(arr)
arr[5:8]=10#不包括8
print(arr)
arr_slice=arr[5:8].copy()
arr_slice[:]=15
print(arr)
print(arr_slice)

[0 1 2 3 4 5 6 7 8 9]
[ 0 1 2 3 4 10 10 10 8 9]
[ 0 1 2 3 4 10 10 10 8 9]
[15 15 15]

更多關於切片的操作在另一篇博客中詳細地寫了:
Python中numpy數組切片:print(a[0::2])、a[::2]、[:,2]、[1:,-1:]、a[::-1]、[ : n]、[m : ]、[-1]、[:-1]、[1:]等的含義(詳細)

18、Pandas

是用於數據預處理和清洗的非常重要的庫。
最重要的數據結構是Series,DataFrame
基礎實例:

from pandas import  Series,DataFrame
import pandas as pd
obj=Series([4,5,6,-7])
print(obj)
print(obj.index)
print(obj.values)

0 4
1 5
2 6
3 -7
dtype: int64
RangeIndex(start=0, stop=4, step=1)
[ 4 5 6 -7]

1)Series基本操作

Series是一維數組

obj2 = Series([4,7,-5,3],index=['d','b','c','a'])
print(obj2)
obj2['c']=6
print(obj2)
print('a'in obj2)#當作列表來用

在這裏插入圖片描述
存儲在字典中的數據怎麼轉化爲Series呢?

data={'beijing':35000,'shanghai':71000,'guangzhou':16000}
obj3=Series(data)#轉化
print(obj3)
obj3.index=['bj','sh','gz']#可以直接修改索引
print(obj3)

在這裏插入圖片描述

2)DataFrame基本操作

DataFrame更像是電子表格,DateFrame可以操作二維,三維,或更高維的數組。一般用等長的列表創建。例如使用字典,其中是等長列表:
1 創建

data = {'city': ['shanghai', 'shanghai', 'beijing'],
        'year': [2016, 2017, 2016],
        'pop': [1.5, 1.7, 2.4]}
frame = DataFrame(data)
print(frame)

在這裏插入圖片描述
2 排序(交換列的順序)

frame1=DataFrame(data,columns=['year','city','pop'])
print(frame1)

在這裏插入圖片描述
3 提取有兩種方式

print(frame1['city'])
print(frame1.year)

在這裏插入圖片描述
4 生成新列
判斷是否是beijing

frame1['cap'] = frame1.city=='beijing'
print(frame1)

在這裏插入圖片描述
5 轉置
行的索引變成列的索引,列的索引變成行的索引。

print(frame1.T)

6 重新索引及空值填充
增加了索引e

obj = Series([4,7,-5,3],index=['d','b','c','a'])
obj1 = obj.reindex(['a','b','c','d','e'])
print(obj1)

在這裏插入圖片描述
增加了索引e,e是空的(NaN)。如果要填充,可以使用:obj1 = obj.reindex([‘a’,‘b’,‘c’,‘d’,‘e’].fill_value=0)
但這樣有時候是不嚴謹的,我們使用上面或者下面的值來補充空值。
method=‘ffill’----使用上面的值填充,method=‘bfill’----使用下面的值填充。

obj = Series(['a','b','c'],index=[0,2,4])
print(obj.reindex(range(6),method='ffill'))
print(obj.reindex(range(6),method='bfill'))

在這裏插入圖片描述
7 刪除缺失值

from numpy import nan as NA
data=Series([1,NA,2])
print(data.dropna())

dropna()刪除所有有NaN的值,我們也可以進行控制,比如只刪除整行全是NaN的:

print(data.dropna(how='all))

刪除整列全是NaN的:

print(data.dropna(axis=1,how='all))

8 填充NaN
fillna(0)修改的是副本,使用inplace=True纔是確定修改了!

print(data.fillna(0),inplace=True)

19、Matplotlib

1)簡單曲線

import matplotlib.pyplot as plt
plt.plot([1,3,5],[4,8,10])
plt.show()

在這裏插入圖片描述

2)繪製numpy進行計算的值

import numpy as np
#linspace產生一條直線,x軸定義域爲-3.14~3.14,中間間隔100個元素
x=np.linspace(-np.pi,np.pi,100)
plt.plot(x,np.sin(x))
plt.show()

在這裏插入圖片描述

3)繪製多條線

plt.figure()—創建圖表
dpi—圖像的精細度,越大文件就越大,雜誌就要300以上

x=np.linspace(-np.pi*2,np.pi*2,100)
plt.figure(1,dpi=50)#dpi是精度
for i in range(1,5):#四條線
    plt.plot(x,np.sin(x/i))
plt.show()

在這裏插入圖片描述

4)繪製直方圖

plt.figure(1,dpi=50)#dpi是精度
data=[1,1,1,2,3,4]
plt.hist(data)#只要傳入數據,直方圖就會統計傳入的數據
plt.show()

在這裏插入圖片描述

5)散點圖

x=np.arange(1,10)
y=x
fig=plt.figure()
plt.scatter(x,y,c='r',marker='o')#c='r'指顏色紅色,marker指定點形狀
plt.show()

在這裏插入圖片描述

6)使用csv數據畫有分類(不同顏色)的散點圖

思路是使用pandas讀取csv,但是繪出的圖是單一色調,如果想要依據某一列的數對點進行分類也就是顏色上的區分,我們引入seaborn庫
可以在官網找實例學習,都有詳細的代碼的。(還有matplotlib庫官網實例可學習一下)
數據使用的是常見的iris數據集,可以在UCI機器學習庫中找到,數據中的virginica列是鳶尾花(iris)的分類,我們就以這一列來區分不同點,賦予不同的顏色,便於後期分析。

import pandas as pd
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")#處理warning,忽略
iris=pd.read_csv("./iris_training.csv")
sns.set(style="white",color_codes=True)
#FacetGrid一般繪圖函數
#hue使用彩色顯示分類,virginica有0/1/2三種取值,所以會顯示三種顏色
#add_legend顯示分類的描述信息
#setosa,versicolor是x,y軸,使用map改變使用的不同的列
sns.FacetGrid(iris,hue="virginica",size=5).map(plt.scatter,"setosa","versicolor").add_legend()

plt.show()

20、Tensflow

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章