首頁 > 後端開發 > Python教學 > 淺析Python資料處理

淺析Python資料處理

不言
發布: 2018-05-02 13:46:24
原創
1781 人瀏覽過

本篇文章給大家分享了關於Python資料處理的相關內容以及要點解釋,對此知識點有興趣的朋友可以參考學習下。

Numpy、Pandas是Python資料處理中常用到的兩個框架,都是採用C語言編寫,所以運算速度快。 Matplotlib是Python的的畫圖工具,可以把之前處理後的資料透過影像繪製出來。之前只是看過文法,沒有系統學習總結過,這篇部落格文章總結了這三個架構的API。

以下是這三個框架的簡單介紹和區別:

  • Numpy:經常用於資料生成和一些運算

  • Pandas:基於Numpy建構的,是Numpy的升級版本

  • #Matplotlib:Python中強大的繪圖工具

Numpy

Numpy快速入門教學可參考:Numpy tutorial

Numpy屬性

ndarray.ndim:維度

ndarray.shape:行數和列數,例如(3, 5)

#ndarray.size:元素的數量

##ndarray. dtype:元素類型

Numpy建立

array(object, dtype=None):使用Python的list或tuple建立資料


# zeors(shape, dtype=float):建立全為0的資料


ones(shape, dtype=None):建立全為1的資料


empty( shape, dtype=float):建立沒有初始化的資料


arange([start, ]stop, [step, ]dtype=None):建立固定間隔的資料段


#linspace(start, stop, num=50, dtype=None):在給定的範圍,均勻的創建資料

Numpy運算

#加、減:a b、a - b


乘:b*2、10*np.sin(a)


次方:b**2


判斷:a<35,輸出True或False的陣列


#矩陣乘:np.dot(A,B) 或A.dot(B)


#其他: =、- 、sin、cos、exp

Numpy索引

#陣列索引方式:A[1, 1]





#。 ##切片:A[1, 1:3]

迭代:for item in A.flat


Numpy其他


##reshape (a, newshape):改變資料形狀,不會對原始資料進行修改,傳回一組新資料


resize(a, new_shape):改變資料形狀,會對原始資料進行修改,不回傳資料

ravel(a):將成一維回傳

vstack(tup):上下合併

hstack(tup):左右合併

hsplit(ary, indices_or_sections):水平分割n份

##vsplit(ary, indices_or_sections):垂直分割n份

copy(a) :深度拷貝

Pandas

Pandas快速入門教學可參考:10 Minutes to pandas

##Pandas資料結構

Pandas的資料結構有兩種:Series和DataFrame。

Series:索引在左邊,值在右邊。建立方式如下:

In [4]: s = pd.Series([1,3,5,np.nan,6,8])
In [5]: s
Out[5]: 
0  1.0
1  3.0
2  5.0
3  NaN
4  6.0
5  8.0
dtype: float64
登入後複製

DataFrame:是一個表格型的資料結構,既有行索引也有列索引, 它可以被看做由Series組成的大字典。建立方式如下:

In [6]: dates = pd.date_range(&#39;20130101&#39;, periods=6)

In [7]: dates
Out[7]: 
DatetimeIndex([&#39;2013-01-01&#39;, &#39;2013-01-02&#39;, &#39;2013-01-03&#39;, &#39;2013-01-04&#39;,
        &#39;2013-01-05&#39;, &#39;2013-01-06&#39;],
       dtype=&#39;datetime64[ns]&#39;, freq=&#39;D&#39;)

In [8]: df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list(&#39;ABCD&#39;))
登入後複製


Pandas檢視資料


index:索引


columns:列索引


values:值


head(n=5):傳回前n項資料

tail(n= 5):傳回後n項資料

describe():列印出資料的數量、平均值等各項資料


sort_index(axis=1, ascending= False):根據索引排序


sort_values(by='B'):根據索引值排序


Pandas選擇資料


數組選擇方式:df['A']


切片選擇方式:df[0:3] 或df['20130102':'20130104']

#根據標籤選擇:df.loc['20130102':'20130104',['A','B']]

依位置選擇:df.iloc[3:5,0:2]


混合選擇:df.ix[:3,['A','C']]


#條件判斷選擇:df[df.A > 0]

Pandas處理遺失資料

刪除遺失資料的行:df.dropna(how='any')


填入遺失數據:df.fillna(value=5)


資料值是否為NaN:pd.isna(df1)

##Pandas合併資料

#pd.concat([df1, df2, df3], axis=0):合併df

pd.merge(left, right, on='key'):依據key欄位合併

df.append(s, ignore_index=True):新增資料

Pandas導入導出

##df.to_csv('foo.csv' ):儲存到csv檔

pd.read_csv('foo.csv'):從csv檔讀取

df.to_excel('foo.xlsx', sheet_name='Sheet1'):儲存到excel檔案

pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA']):從excel檔案讀取

Matplotlib

這裡只介紹最簡單的出圖方式:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 随机生成1000个数据
data = pd.Series(np.random.randn(1000),index=np.arange(1000))
# 为了方便观看效果, 我们累加这个数据
data.cumsum()
# pandas 数据可以直接观看其可视化形式
data.plot()
plt.show()
登入後複製

##相關推薦:

淺聊python日誌的設定檔路徑問題

################################################### #

以上是淺析Python資料處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板