Python資料分析入門
如今資料分析越來越重要,比起使用excel等工具,使用程式語言更加高效。這篇文章主要介紹一些簡單的資料分析入門知識,使用的語言是python。
讀取csv檔案
資料分析的第一步是要利用程式讀取csv檔案:
例子1:
import csv
with open('a.csv') as csvfile:
mpg = list(csv.DictReader(csvfile))
mpg[:3]
例子2:
ds_file = "/home"
with open(ds_file, 'w') as csvfile:
fout = csv.writer(csvfile, delimiter='|')
for airport in airports:
fout.writerow(airport)
Pandas
Panda庫是處理dataframe的強有力工具, 我們可以處理兩種型別的資料:
- Series: one-dimensional, 一維資料
values = pd.Series(data, index=idx)
series = pd.Series(range(5), index=['a','b','c','d','e'])
- DataFrame: two-dimensional,二維資料
dt = {
'A': [0,2,3,45],
'B': [1,2,3,4]
}
df = pd.DataFrame(dt, index=list('qwert'))
df.head() #檢視頭部幾行資料
df.tail(2) # 檢視尾部2行資料
df.describe() #檢視統計資料
df.columns # 檢視所有列名
對於資料中有一些空資料,可以使用以下這些方法進行處理:
df.dropna()
df.dropna(axis=1)
df.fillna(0)
df.fillna(df.mean())
另外,更加高階的一些資料處理操作:
- : 透過標籤選取資料
- : 透過行/列號選取資料
Numpy
NumPy(Numerical Python) 是Python 語言的一個擴充套件程式庫,支援大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫。它也是資料分析中常用的一個庫。
基礎操作
最基礎的操作就是資料的加減乘除,都可以給予陣列的形式進行:
a = np.array([1,2,3,4])
b = np.array([2,3,4,5])
a + b
a / b
a-b
a > b
a*b
A.dot(B)
np.dot(A, B)
a *= 3
另外,可以使用統計方法獲取陣列的統計資訊:
ages.sum()
ages.min()
ages.max()
ages.sum(axis=0)
切片和高階索引
資料的切片和其他Python資料結構類似:
a[2] # 獲取第二個
a[-2] # 獲取倒數第二個
a[2:7] # 從索引 2 開始到索引 7 停止
a[:11:2] # 從最開頭到索引11停止,間隔為2
a[::-1] # 獲得反轉的資料結構
numpy中提供了多種分割陣列的方式:
np.split(x, 3) # 通用函式,將一個陣列分割成多個子陣列
np.split(x, [4,7])
np.hsplit(y, 2) # 按列分割
np.vsplit(y, 2) # 按行分割
數學函式
numpy庫還提供了很多數學函式操作:
angels = np.array([0, 30, 45])
np.radians(angles) # 角度計算
np.cos(angels_radians) # cos
np.degrees(inv)
np.mean()
np.median()
np.genfromtxt('data/s.csv', delimiter=',')
np.std()
np.var()
陣列變形
另外,可以藉助以下這些方法實現陣列的翻轉,變換等操作:
a.ravel() # 展開陣列
a.T # 置換陣列
a.T.ravel()
a.shape # 返回陣列的形狀
a.reshape(4,2) # 修改維度
遍歷元素
在python程式中有很多種方式可以遍歷numpy 生成的資料:
for i in a:
print(i)
for element in students.flatten():
print(element)
for element in students.flatten(order='F'):
print(element)
numpy.*nditer*
方法提供了一種更加靈活的方式訪問一個或者多個陣列元素。
for i in np.nditer(x):
print(i)
我們可以使用引數order來決定遍歷的順序,order='F'
表示Fortran order,即是列序優先.反之,order='C'
表示行序優先:
for i in np.nditer(x, order = 'F', flags = ['external_loop']):
print(i)
陣列的淺複製
一般的引用複製都是淺複製,這也意味著引用資料被修改,原有資料來源也會被修改
frunits.view()
深複製
fruits = np.array(3)
basket = fruits.copy()
高階陣列索引
藉助原生操作,我們還能實現更加高階地過濾處理陣列:
import numpy as np
a = np.arange(12)**2
indx_1 = [2,6,8]
a[inx_1]
indx+2 = np.array([[2,4],[8,10]])
a[indx_2]
food[row, col]
返回所有非0的陣列:
np.count_nonzero(gdp_16[gdp_16 > 1000])
Scipy
SciPy以NumPy為基礎,與NumPy一樣,SciPy有著穩定,成熟,且應用廣泛的數值運算庫。要學習相關技術,可以參考其
圖片操作
藉助scipy,可以基於畫素層面處理一些圖片資料:
# rgb values r,g,b: 值從0-255
# 灰度值grayscale範圍從0到-1
from scipy import ndimage
from scipy import misc
import matplotlib.pyplot as plt
f = misc.face()
f.shape
plt.imshow(f)
plt.show()
其中misc模組中,提供一些基本的影像相關的讀寫函式,可以輕鬆讀寫影像資料。misc模組自帶一些灰度影像ascent和彩色的face圖,可以供我們學習使用。
視覺化
資料的視覺化,通常我們會藉助matplotlib這個庫,如果你使用Jupyter的話,可以使用如下語句開啟自動畫圖功能:
%matplotlib inline
下面是一些簡單的例子:
import matplotlib.pyplot as plt
# 1. 畫圖
fig = plt.figure()
# 2.新增axis
ax = fig.add_subplot()
# 或者使用快速步驟
fig, ax = plt.subplots()
plt.show()
或者畫一個子圖:
import numpy as np
fig, ax = plt.subplots(figsize=(10,5))
m = -2
b = 5
x = np.linspace(0, 10)
y = m * x + b
# 把資料帶上
ax.plot(x, y)
plt.show()
我們還可以在圖片上新增文字資訊:
ax.set_xlabel("X Axis")
ax.set_ylabel("Y Axis")
ax.set_title("Test Title")
控制顯示範圍:
ax.set_xlim(-10, 10)
ax.set_ylim(-10, 10)
控制數軸上顯示的數字邏輯:
ax.set_xticks(np.arange(0, 15, 5))
ax.set_yticks(np.arange(-15, 10, 5))
如果需要畫多條線的話,可以參考如下例子:
x1 = np.linspace(0, 10)
y1 = m * x1 + b
x2 = x1
y2 = -1 * y1
ax.plot(x1, y1)
ax.plot(x2, y2)
*參考資料*
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1817/viewspace-2824929/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python資料分析入門(五)Python
- Python資料分析入門(四)Python
- Python資料分析入門(三)Python
- Python資料分析入門(二)Python
- Python資料分析入門(一)Python
- Python資料分析入門(十四):資料分析中常用圖Python
- python入門總結(資料分析方向)Python
- Python入門教程—資料分析工具PandasPython
- 【Python入門】Python資料分析最重要的庫!Python
- Python資料分析入門(一):搭建環境Python
- Python資料分析入門知識手冊Python
- 使用 Python 進行資料分析:入門指南Python
- 資料分析 | 零基礎入門資料分析(一):從入門到摔門?
- Python 資料分析入門寶藏書,選它!Python
- Spark資料分析概念入門Spark
- 淺談資料分析入門
- Python資料分析入門(十七):繪製條形圖Python
- Excel資料分析入門-資料圖表Excel
- 入門Python資料分析最好的實戰專案(二)Python
- 入門Python資料分析最好的實戰專案(一)Python
- Excel資料分析入門-資料透視表Excel
- Python 資料科學入門Python資料科學
- Python 股票分析入門Python
- 資料分析師之SQL入門SQL
- R語言入門與資料分析R語言
- 資料分析用python語言有什麼好處?Python入門教程Python
- 用 Python 入門資料科學Python資料科學
- python資料庫操作 - PyMySQL入門Python資料庫MySql
- 大資料基礎----Python入門大資料Python
- Python 效能分析入門指南Python
- Excel資料分析入門-函式和公式Excel函式公式
- python入門使用(四):資料型別Python資料型別
- 第一章 Excel資料分析入門 --(2)Excel匯入資料Excel
- Python學習手冊(入門&爬蟲&資料分析&機器學習&深度學習)Python爬蟲機器學習深度學習
- Python資料分析入門(十六):設定視覺化圖表的資訊Python視覺化
- 《R語言入門與資料分析》——向量索引R語言索引
- 網站資料統計分析相關入門網站
- Python 資料處理庫 pandas 入門教程Python