1. 程式人生 > >python學習第04篇-20181031

python學習第04篇-20181031

今天學習的是python的資料分析相關的工具,比如Numpy, Scipy, Pandas三個包的一些基本用法,筆記如下:

'''
Numpy
Numpy的資料結構是n維的陣列物件,叫做ndarry
基本操作:
import numpy as np
data1 = [1,2,3,4,5]
array1 = np.array(data1) # 將列表轉成Numpy中的陣列
# 多維陣列
data2 = [[1,2,3],[4,5,6]]
array2 = np.array(data2)

# 檢視array陣列的型別
array2.dtype
# 轉換資料格式
array1.astype('str')

# array1陣列的批量+1
array1 + 1
# array1之間對應元素相乘
array1 * array1
# array1陣列全部 * 2
array1 * 2

Pandas:
資料結構:除了pabel資料結構,還引入 Series和DataFrame,
這兩種資料結構都建立在Numpy的基礎之上

Series:一維陣列系列,又稱序列,與Numpy中的一維array相似
DataFrame:二維的表格型資料結構,可以將DataFrame理解為Series的容器
Panel:三維陣列,可以理解為DataFrame的容器
'''

"""
資料準備:
一、資料型別
python 常用的3種資料型別:Logical , Numeric , Character
1.Logical(邏輯型)
& 與
| 或
not 非

2.Numeric(數值型)
數值運算子有:+ - * 和 /

3.Character(字元型)
字元型資料一般使用單引號或者雙引號包起來

python資料型別變數命名:
1.字母,下劃線與數字   下劃線與數字不能開頭
2.大小寫敏感
3.變數名不能是python保留字

二、資料結構
1.Series
系列,也稱序列,用於儲存一行或一列的資料,以及與之相關的索引集合
使用方法如下:
Series([資料1, 資料2, ...], index=[索引1, 索引2, ...])
Y = Series(['a','b','c','d'])
'a' in Y.values
Y.append(Series('e')) 追加序列,不能追加單個值
Y[1:3] 切片
Y[0,2,3] 定位獲取index為0,2,3的值
Y.drop(0) 按照索引號刪除
Y.drop('first') 按照所以名刪除

Y.index[2] 按照索引號查詢索引名
Y.drop(Y.index[3])  根據位置刪除,返回新的序列

# 通過值訪問系列index
Y.index[Y.values == 'a']  ---> Index(['first'], dtype='object')

# 通過賦值修改Series中的index,也可以通過reindex方法
Y.index = [1,2,3,4] ---> 索引個數與元素個數對應

# 字典轉化為Series
s = Series({'a':1 x.index[x.values == 'a'], 'b':2, 'c':3})

# reindex
obj = Series([4.5,2.6,3.7,-5.3],index=['d','b','a','c'])
obj2 = obj.reindex(['a','b','c','d'])
結果:
a    3.7
b    2.6
c   -5.3
d    4.5
dtype: float64

# 索引數目超過元素個數
obj2 = obj.reindex(['a','b','c','d','e'])
結果:
a    3.7
b    2.6
c   -5.3
d    4.5
e    NaN
dtype: float64

obj2 = obj.reindex(['a','b','c','d','e'], fill_value=0)
結果:
a    3.7
b    2.6
c   -5.3
d    4.5
e    0.0
dtype: float64
"""
'''
Series物件本質是一個Numpy的陣列(矩陣),因此Numpy的陣列處理函式可以直接對Series進行處理。
但是Series除了使用下標存取元素之外,還可以使用標籤存取元素,這一點與字典相似。
每個Series物件實際上由下面兩個陣列組成:
index:從Numpy繼承的index物件,儲存標籤資訊
values:儲存值的Numpy陣列
'''