1. 程式人生 > >Python 資料分析包:pandas 基礎

Python 資料分析包:pandas 基礎

類似於 Numpy 的核心是 ndarray,pandas 也是圍繞著 Series 和 DataFrame 兩個核心資料結構展開的 。Series 和 DataFrame 分別對應於一維的序列和二維的表結構。pandas 約定俗成的匯入方法如下:


from pandas import Series,DataFrame
import pandas as pd

Series

Series 可以看做一個定長的有序字典。基本任意的一維資料都可以用來構造 Series 物件:


>>> s = Series([1,2,3.0,'abc'])
>>> s
0      1
1      2
2      3
3    abc
dtype: object

雖然 dtype:object 可以包含多種基本資料型別,但總感覺會影響效能的樣子,最好還是保持單純的 dtype。

Series 物件包含兩個主要的屬性:index 和 values,分別為上例中左右兩列。因為傳給構造器的是一個列表,所以 index 的值是從 0 起遞增的整數,如果傳入的是一個類字典的鍵值對結構,就會生成 index-value 對應的 Series;或者在初始化的時候以關鍵字引數顯式指定一個 index 物件:


>>> s = Series(data=[1,3,5,7],index = ['a','b','x','y'])
>>> s
a    1
b    3
x    5
y    7
dtype: int64
>>> s.index
Index(['a', 'b', 'x', 'y'], dtype='object')
>>> s.values
array([1, 3, 5, 7], dtype=int64)

Series 物件的元素會嚴格依照給出的 index 構建,這意味著:如果 data 引數是有鍵值對的,那麼只有 index 中含有的鍵會被使用;以及如果 data 中缺少響應的鍵,即使給出 NaN 值,這個鍵也會被新增。

注意 Series 的 index 和 values 的元素之間雖然存在對應關係,但這與字典的對映不同。index 和 values 實際仍為互相獨立的 ndarray 陣列,因此 Series 物件的效能完全 ok。

Series 這種使用鍵值對的資料結構最大的好處在於,Series 間進行算術運算時,index 會自動對齊。

另外,Series 物件和它的 index 都含有一個 name

 屬性:


>>> s.name = 'a_series'
>>> s.index.name = 'the_index'
>>> s
the_index
a            1
b            3
x            5
y            7
Name: a_series, dtype: int64

DataFrame

DataFrame 是一個表格型的資料結構,它含有一組有序的列(類似於 index),每列可以是不同的值型別(不像 ndarray 只能有一個 dtype)。基本上可以把 DataFrame 看成是共享同一個 index 的 Series 的集合。

DataFrame 的構造方法與 Series 類似,只不過可以同時接受多條一維資料來源,每一條都會成為單獨的一列:


>>> data = {'state':['Ohino','Ohino','Ohino','Nevada','Nevada'],
        'year':[2000,2001,2002,2001,2002],
        'pop':[1.5,1.7,3.6,2.4,2.9]}
>>> df = DataFrame(data)
>>> df
   pop   state  year
0  1.5   Ohino  2000
1  1.7   Ohino  2001
2  3.6   Ohino  2002
3  2.4  Nevada  2001
4  2.9  Nevada  2002

[5 rows x 3 columns]

雖然引數 data 看起來是個字典,但字典的鍵並非充當 DataFrame 的 index 的角色,而是 Series 的 “name” 屬性。這裡生成的 index 仍是 “01234”。

完整的 DataFrame 構造器引數為:DataFrame(data=None,index=None,coloumns=None),columns 即 “name”:


>>> df = DataFrame(data,index=['one','two','three','four','five'],
               columns=['year','state','pop','debt'])
>>> df
       year   state  pop debt
one    2000   Ohino  1.5  NaN
two    2001   Ohino  1.7  NaN
three  2002   Ohino  3.6  NaN
four   2001  Nevada  2.4  NaN
five   2002  Nevada  2.9  NaN

[5 rows x 4 columns]

同樣缺失值由 NaN 補上。看一下 index、columns 和 索引的型別:


>>> df.index
Index(['one', 'two', 'three', 'four', 'five'], dtype='object')
>>> df.columns
Index(['year', 'state', 'pop', 'debt'], dtype='object')
>>> type(df['debt'])
<class 'pandas.core.series.Series'>

DataFrame 面向行和麵向列的操作基本是平衡的,任意抽出一列都是 Series。 

物件屬性

查詢索引

查詢某個值在陣列中的索引,類似於 Python 內建的 list.index(value) 方法。可以通過布林索引來實現。比如我們想在一個 Series 中尋找到 ‘c’:


>>> ser = Series(list('abcdefg'))
>>> ser[ser='c']
2   c
dtype: object

Series 中還有一對 ser.idxmax() 和 ser.idxmin() 方法,可以返回陣列中最大(小)值的索引值,或者 .argmin() 和 .argmax() 返回索引位置。當然這兩類方法也是可以通過上面這種 ser[ser=ser.max()] 來替代實現的。 

修改索引

陣列的 index 屬性時不可變的,因此所謂修改索引,其實操作的是一個使用了新索引的新陣列,並繼承舊資料。

obj.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False) 方法接受一個新索引(key)並返回一個新陣列。這個 key 的值可以是序列型別,也可以是呼叫者的一個列名,即將某一列設為新陣列的索引。


>>> indexed_df = df.set_index(['A', 'B'])
>>> indexed_df2 = df.set_index(['A', [0, 1, 2, 0, 1, 2]])
>>> indexed_df3 = df.set_index('column1')

重新索引

Series 物件的重新索引通過其 .reindex(index=None,**kwargs) 方法實現。**kwargs 中常用的引數有倆:method=None,fill_value=np.NaN


ser = Series([4.5,7.2,-5.3,3.6],index=['d','b','a','c'])
>>> a = ['a','b','c','d','e']
>>> ser.reindex(a)
a   -5.3
b    7.2
c    3.6
d    4.5
e    NaN
dtype: float64
>>> ser.reindex(a,fill_value=0)
a   -5.3
b    7.2
c    3.6
d    4.5
e    0.0
dtype: float64
>>> ser.reindex(a,method='ffill')
a   -5.3
b    7.2
c    3.6
d    4.5
e    4.5
dtype: float64
>>> ser.reindex(a,fill_value=0,method='ffill')
a   -5.3
b    7.2
c    3.6
d    4.5
e    4.5
dtype: float64

.reindex() 方法會返回一個新物件,其 index 嚴格遵循給出的引數,method:{'backfill', 'bfill', 'pad', 'ffill', None} 引數用於指定插值(填充)方式,當沒有給出時,自動用 fill_value 填充,預設為 NaN(ffill = pad,bfill = back fill,分別指插值時向前還是向後取值)

DataFrame 物件的重新索引方法為:.reindex(index=None,columns=None,**kwargs)。僅比 Series 多了一個可選的 columns 引數,用於給列索引。用法與上例類似,只不過插值方法 method 引數只能應用於,即軸 0。


>>> state = ['Texas','Utha','California']
>>> df.reindex(columns=state,method='ffill')
    Texas  Utha  California
a      1   NaN           2
c      4   NaN           5  
d      7   NaN           8

[3 rows x 3 columns]
>>> df.reindex(index=['a','b','c','d'],columns=state,method='ffill')
   Texas  Utha  California
a      1   NaN           2
b      1   NaN           2
c      4   NaN           5
d      7   NaN           8

[4 rows x 3 columns]

不過 fill_value 依然對有效。聰明的小夥伴可能已經想到了,可不可以通過 df.T.reindex(index,method='**').T 這樣的方式來實現在列上的插值呢,答案是可行的。另外要注意,使用 reindex(index,method='**') 的時候,index 必須是單調的,否則就會引發一個 ValueError: Must be monotonic for forward fill,比如上例中的最後一次呼叫,如果使用 index=['a','b','d','c'] 的話就不行。 

刪除指定軸上的項

即刪除 Series 的元素或 DataFrame 的某一行(列)的意思,通過物件的 .drop(labels, axis=0) 方法:


>>> ser
d    4.5
b    7.2
a   -5.3
c    3.6
dtype: float64
>>> df
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> ser.drop('c')
d    4.5
b    7.2
a   -5.3
dtype: float64
>>> df.drop('a')
   Ohio  Texas  California
c     3      4           5
d     6      7           8

[2 rows x 3 columns]
>>> df.drop(['Ohio','Texas'],axis=1)
   California
a           2
c           5
d           8

[3 rows x 1 columns]

.drop() 返回的是一個新物件,元物件不會被改變。 

索引和切片

就像 Numpy,pandas 也支援通過 obj[::] 的方式進行索引和切片,以及通過布林型陣列進行過濾。

不過須要注意,因為 pandas 物件的 index 不限於整數,所以當使用非整數作為切片索引時,它是末端包含的。


>>> foo
a    4.5
b    7.2
c   -5.3
d    3.6
dtype: float64
>>> bar
0    4.5
1    7.2
2   -5.3
3    3.6
dtype: float64
>>> foo[:2]
a    4.5
b    7.2
dtype: float64
>>> bar[:2]
0    4.5
1    7.2
dtype: float64
>>> foo[:'c']
a    4.5
b    7.2
c   -5.3
dtype: float64

這裡 foo 和 bar 只有 index 不同——bar 的 index 是整數序列。可見當使用整數索引切片時,結果與 Python 列表或 Numpy 的預設狀況相同;換成 'c' 這樣的字串索引時,結果就包含了這個邊界元素。

另外一個特別之處在於 DataFrame 物件的索引方式,因為他有兩個軸向(雙重索引)。

可以這麼理解:DataFrame 物件的標準切片語法為:.ix[::,::]。ix 物件可以接受兩套切片,分別為行(axis=0)和列(axis=1)的方向:


>>> df
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.ix[:2,:2]
   Ohio  Texas
a     0      1
c     3      4

[2 rows x 2 columns]
>>> df.ix['a','Ohio']
0

而不使用 ix ,直接切的情況就特殊了:

  • 索引時,選取的是列
  • 切片時,選取的是行

這看起來有點不合邏輯,但作者解釋說 “這種語法設定來源於實踐”,我們信他。


>>> df['Ohio']
a    0
c    3
d    6
Name: Ohio, dtype: int32
>>> df[:'c']
   Ohio  Texas  California
a     0      1           2
c     3      4           5

[2 rows x 3 columns]
>>> df[:2]
   Ohio  Texas  California
a     0      1           2
c     3      4           5

[2 rows x 3 columns]

還有一種特殊情況是:假如有這樣一個索引 index([2,4,5]) ,當我們使用 ser[2] 索引的時候,到底會被解釋為第一個索引還是第三個索引呢?

答案是第一個索引,即當你的陣列 index 是整數型別的時候,你使用整數索引,都會被自動解釋為基於標籤的索引,而不是基於位置的索引。要想消除這種歧義,可以使用

  • .loc[label] 這是嚴格基於標籤的索引
  • .iloc[inte] 這是嚴格基於整數位置的索引

.ix[] 更像是這兩種嚴格方式的智慧整合版。

使用布林型陣列的情況,注意行與列的不同切法(列切法的 : 不能省):


>>> df['Texas']>=4
a    False
c     True
d     True
Name: Texas, dtype: bool
>>> df[df['Texas']>=4]
   Ohio  Texas  California
c     3      4           5
d     6      7           8

[2 rows x 3 columns]
>>> df.ix[:,df.ix['c']>=4]
   Texas  California
a      1           2
c      4           5
d      7           8

[3 rows x 2 columns]

算術運算和資料對齊

pandas 最重要的一個功能是,它可以對不同索引的物件進行算術運算。在將物件相加時,結果的索引取索引對的並集。自動的資料對齊在不重疊的索引處引入空值,預設為 NaN。


>>> foo = Series({'a':1,'b':2})
>>> foo
a    1
b    2
dtype: int64
>>> bar = Series({'b':3,'d':4})
>>> bar
b    3
d    4
dtype: int64
>>> foo + bar
a   NaN
b     5
d   NaN
dtype: float64

DataFrame 的對齊操作會同時發生在行和列上。

當不希望在運算結果中出現 NA 值時,可以使用前面 reindex 中提到過 fill_value 引數,不過為了傳遞這個引數,就需要使用物件的方法,而不是操作符:df1.add(df2,fill_value=0)。其他算術方法還有:sub(), div(), mul()

Series 和 DataFrame 之間的算術運算涉及廣播,暫時先不講。 

函式應用和對映

Numpy 的 ufuncs(元素級陣列方法)也可用於操作 pandas 物件。

當希望將函式應用到 DataFrame 物件的某一行或列時,可以使用 .apply(func, axis=0, args=(), **kwds)方法。


f = lambda x:x.max()-x.min()
>>> df
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.apply(f)
Ohio          6
Texas         6
California    6
dtype: int64
>>> df.apply(f,axis=1)
a    2
c    2
d    2
dtype: int64

排序和排名

Series 的 sort_index(ascending=True) 方法可以對 index 進行排序操作,ascending 引數用於控制升序或降序,預設為升序。

若要按值對 Series 進行排序,當使用 .order(na_last=True, ascending=True, kind='mergesort') 方法,任何缺失值預設都會被放到 Series 的末尾。

在 DataFrame 上,.sort_index(axis=0, by=None, ascending=True) 方法多了一個軸向的選擇引數與一個 by 引數,by 引數的作用是針對某一(些)進行排序(不能對行使用 by 引數):


>>> df.sort_index(by='Ohio')
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.sort_index(by=['California','Texas'])
   Ohio  Texas  California
a     0      1           2
c     3      4           5
d     6      7           8

[3 rows x 3 columns]
>>> df.sort_index(axis=1)
   California  Ohio  Texas
a           2     0      1
c           5     3      4
d           8     6      7

[3 rows x 3 columns]

排名(Series.rank(method='average', ascending=True))的作用與排序的不同之處在於,他會把物件的 values 替換成名次(從 1 到 n)。這時唯一的問題在於如何處理平級項,方法裡的 method 引數就是起這個作用的,他有四個值可選:average, min, max, first


>>> ser=Series([3,2,0,3],index=list('abcd'))
>>> ser
a    3
b    2
c    0
d    3
dtype: int64
>>> ser.rank()
a    3.5
b    2.0
c    1.0
d    3.5
dtype: float64
>>> ser.rank(method='min')
a    3
b    2
c    1
d    3
dtype: float64
>>> ser.rank(method='max')
a    4
b    2
c    1
d    4
dtype: float64
>>> ser.rank(method='first')
a    3
b    2
c    1
d    4
dtype: float64

注意在 ser[0]=ser[3] 這對平級項上,不同 method 引數表現出的不同名次。

DataFrame 的 .rank(axis=0, method='average', ascending=True) 方法多了個 axis 引數,可選擇按行或列分別進行排名,暫時好像沒有針對全部元素的排名方法。 

統計方法

pandas 物件有一些統計方法。它們大部分都屬於約簡和彙總統計,用於從 Series 中提取單個值,或從 DataFrame 的行或列中提取一個 Series。

比如 DataFrame.mean(axis=0,skipna=True) 方法,當資料集中存在 NA 值時,這些值會被簡單跳過,除非整個切片(行或列)全是 NA,如果不想這樣,則可以通過 skipna=False 來禁用此功能:


>>> df
    one  two
a  1.40  NaN
b  7.10 -4.5
c   NaN  NaN
d  0.75 -1.3

[4 rows x 2 columns]
>>> df.mean()
one    3.083333
two   -2.900000
dtype: float64
>>> df.mean(axis=1)
a    1.400
b    1.300
c      NaN
d   -0.275
dtype: float64
>>> df.mean(axis=1,skipna=False)
a      NaN
b    1.300
c      NaN
d   -0.275
dtype: float64

其他常用的統計方法有: 

######################## *******************************************
count 非 NA 值的數量
describe 針對 Series 或 DF 的列計算彙總統計
min , max 最小值和最大值
argmin , argmax 最小值和最大值的索引位置(整數)
idxmin , idxmax 最小值和最大值的索引值
quantile 樣本分位數(0 到 1)
sum 求和
mean 均值
median 中位數
mad 根據均值計算平均絕對離差
var 方差
std 標準差
skew 樣本值的偏度(三階矩)
kurt 樣本值的峰度(四階矩)
cumsum 樣本值的累計和
cummin , cummax 樣本值的累計最大值和累計最小值
cumprod 樣本值的累計積
diff 計算一階差分(對時間序列很有用)
pct_change 計算百分數變化

協方差與相關係數

Series 有兩個方法可以計算協方差與相關係數,方法的主要引數都是另一個 Series。DataFrame 的這兩個方法會對進行兩兩運算,並返回一個 len(columns) 大小的方陣:

  • .corr(other, method='pearson', min_periods=1) 相關係數,預設皮爾森
  • .cov(other, min_periods=None) 協方差

min_periods 引數為樣本量的下限,低於此值的不進行運算。 

列與 Index 間的轉換

DataFrame 的 .set_index(keys, drop=True, append=False, verify_integrity=False) 方法會將其一個或多個列轉換為行索引,並返回一個新物件。預設 drop=True 表示轉換後會刪除那些已經變成行索引的列。另一個.reset_index() 方法的作用正相反,會把已經層次化的索引轉換回列裡面。


>>> df = DataFrame(np.arange(8).reshape(4,2),columns=['a','b'])
>>> df
   a  b
0  0  1
1  2  3
2  4  5
3  6  7

[4 rows x 2 columns]
>>> df2 = df.set_index('a')
>>> df2
   b
a   
0  1
2  3
4  5
6  7

[4 rows x 1 columns]
>>> df2.reset_index()
   a  b
0  0  1
1  2  3
2  4  5
3  6  7

[4 rows x 2 columns]

處理缺失資料

pandas 中 NA 的主要表現為 np.nan,另外 Python 內建的 None 也會被當做 NA 處理。

處理 NA 的方法有四種:dropna , fillna , isnull , notnull 。 

is(not)null

這一對方法對物件做元素級應用,然後返回一個布林型陣列,一般可用於布林型索引。 

dropna

對於一個 Series,dropna 返回一個僅含非空資料和索引值的 Series。

問題在於對 DataFrame 的處理方式,因為一旦 drop 的話,至少要丟掉一行(列)。這裡的解決方式與前面類似,還是通過一個額外的引數:dropna(axis=0, how='any', thresh=None) ,how 引數可選的值為 any 或者 all。all 僅在切片元素全為 NA 時才拋棄該行(列)。另外一個有趣的引數是 thresh,該引數的型別為整數,它的作用是,比如 thresh=3,會在一行中至少有 3 個非 NA 值時將其保留。

fillna

fillna(value=None, method=None, axis=0) 中的 value 引數除了基本型別外,還可以使用字典,這樣可以實現對不同的列填充不同的值。method 的用法與前面 .reindex() 方法相同,這裡不再贅述。 

inplace 引數

前面有個點一直沒講,結果整篇示例寫下來發現還挺重要的。就是 Series 和 DataFrame 物件的方法中,凡是會對陣列作出修改並返回一個新陣列的,往往都有一個 replace=False 的可選引數。如果手動設定為 True,那麼原陣列就可以被替換。 

層次化索引

層次化索引(hierarchical indexing)是 pandas 的一項重要功能,它允許你在一個軸上擁有多個索引級別。換句話說,一個使用了層次化的索引的二維陣列,可以儲存和處理三維以上的資料。


>>> hdf = DataFrame(np.arange(8).reshape(4,2),index=[['sh','sh','sz','sz'],['600000','600001','000001','000002']],columns=['open','close'])
>>> hdf
           open  close
sh 600000     0      1
   600001     2      3
sz 000001     4      5
   000002     6      7

[4 rows x 2 columns]
>>> hdf.index
MultiIndex(levels=[['sh', 'sz'], ['000001', '000002', '600000', '600001']],
           labels=[[0, 0, 1, 1], [2, 3, 0, 1]])

上例中原本 sh 和 sz 已經是第三維的索引了,但使用層次化索引後,可以將整個資料集控制在二維表結構中。這對於資料重塑和基於分組的操作(如生成透視表)比較重要。

索引或層次化索引物件(Index 與 MultiIndex)都有一個 names 屬性,可以用來給索引層次命名,以便索引和增加直觀性。對 names 屬性的操作可以直接通過 obj.index.names=[] 的形式來實現。

相關推薦

Python 資料分析pandas 基礎

類似於 Numpy 的核心是 ndarray,pandas 也是圍繞著 Series 和 DataFrame 兩個核心資料結構展開的 。Series 和 DataFrame 分別對應於一維的序列和二維的表結構。pandas 約定俗成的匯入方法如下: from pandas import Series,D

吳裕雄 資料探勘與分析案例實戰(4)——python資料處理工具Pandas

# 匯入模組import pandas as pdimport numpy as np # 構造序列gdp1 = pd.Series([2.8,3.01,8.99,8.59,5.18])print(gdp1)# 取出gdp1中的第一、第四和第五個元素print('行號風格的序列:\n',gdp1[[0,3,

基礎Python資料分析實戰豆瓣人的電影口味重嗎?

在上一篇文章中,我們實戰使用urllib和BeautifulSoup抓取了關於豆瓣電影TOP250的非常豐富的資訊,包括導演、編劇、演員、上映時間和地區、語言、別名、短評數、影評數、多少人想看、多少人看過等多達23個欄位。 接下來,我們要做的就是對這些資料進行分析、挖掘,得到儘可能多

Python資料分析入門之pandas總結基礎

一. Series Series: pandas的長槍(資料表中的一列或一行,觀測向量,一維陣列...) Series1 = pd.Series(np.random.randn(4)) print Series1,type(Series1) print Seri

python數據處理pandas基礎

log eat ges 處理 保留 sed lang sce rop 本文資料來源:   Python for Data Anylysis: Chapter 5   10 mintues to pandas: http://pandas.pydata.org/pandas-

資料分析Numpy基礎陣列和向量運算

☆Numpy(Numerical Python)是高效能科學計算和資料分析的基礎包,它是幾乎所有資料分析高階工具的構建基礎。 ndarry ,一個具有向量算數運算和複雜廣播能力的快速且節省空間的多維陣列。 用於對整組資料進行快速運算的標準數學函式(無需編寫迴

python資料分析處理庫-Pandas資料讀取、索引與計算

Pandas資料讀取、索引與計算 Pandas資料結構為DataFrame,裡面可以同時是int、float、object(string型別時)、datatime、bool資料型別 import p

python資料分析處理庫-Pandas之Series結構及Series常用操作方法

我上上篇部落格說過:Pandas資料結構為DataFrame,裡面可以同時是int、float、object(string型別時)、datatime、bool資料型別。而構成DataFrame結構的每一

python 資料分析 之 用pandas和seaborn繪圖

matplotlib是一個相對底層的工具。pandas自身有內建的視覺化工具。另一個庫seaborn則是用來做一些統計圖形。 匯入seaborn會改變matlotlib預設的顏色和繪圖樣式,提高可讀性和美感。即使不適用seaborn的API,也可以利用seabo

7.python資料分析與展示------Pandas庫入門

1.Pandas庫的介紹Pandas是Python第三方庫,提供高效能易用資料型別和分析工具             import    pandas as   pdPandas基於Numpy實現,常與Numpy和Matplotlib一同使用import pandas as

python資料分析系列教程——Pandas全解

起步 Pandas最初被作為金融資料分析工具而開發出來,因此 pandas 為時間序列分析提供了很好的支援。 Pandas 的名稱來自於面板資料(panel data)和python資料分析 (data analysis) 。panel data是經濟學中關於

python資料分析(一)】Numpy基礎及基本應用

一.資料處理的一般流程: 資料收集—》資料預處理—》資料處理—》資料展示 資料收集:網路爬蟲,公開資料集,其他途徑收集的資料 資料預處理:歸一化,二值化,維度變換,去重,無效資料過濾 資料處理:資料排序,資料查詢,資料統計分析 展示:列表,圖表,動態互動圖形

資料分析pythonPandas基礎結構化資料處理

python:Pandas基礎:結構化資料處理 目錄: 一 pandas及其重要性 pandas是資料分析工作的首選庫。它含有使資料分析工作變得更快更簡單的高階資料結構和操作工具。 pandas是基

小白學 Python 資料分析(5)Pandas (四)基礎操作(1)檢視資料

在家為國家做貢獻太無聊,不如跟我一起學點 Python 人生苦短,我用 Python 前文傳送門: 小白學 Python 資料分析(1):資料分析基礎 小白學 Python 資料分析(2):Pandas (一)概述 小白學 Python 資料分析(3):Pandas (二)資料結構 Series

小白學 Python 資料分析(6)Pandas (五)基礎操作(2)資料選擇

人生苦短,我用 Python 前文傳送門: 小白學 Python 資料分析(1):資料分析基礎 小白學 Python 資料分析(2):Pandas (一)概述 小白學 Python 資料分析(3):Pandas (二)資料結構 Series 小白學 Python 資料分析(4):Pandas (三)資

Python資料分析基礎教程NumPy學習指南(第2版) pdf 下載

罕見的NumPy中文入門教程,Python資料分析優選從基礎的知識講起,手把手帶你進入大資料探勘領域囊括大量具有啟發性與實用價值的實戰案例。 內容簡介   《圖靈程式設計叢書;Python資料分析基礎教程:NumPy學習指南(第2版)》是NumPy的入門教程,主要介紹NumPy以及相關

分享《Python資料分析基礎教程NumPy學習指南(第2版)》高清中文PDF+英文PDF+原始碼

下載:https://pan.baidu.com/s/1YSD97Gd3gmmPmNkvuG0eew更多資料分享:http://blog.51cto.com/3215120 《Python資料分析基礎教程:NumPy學習指南(第2版)》高清中文PDF+高清英文PDF+原始碼 高清中文版PDF,249頁,帶

分享《Python資料分析基礎教程NumPy學習指南(第2版)》高清中文PDF+高清英文PDF+原始碼

下載:https://pan.baidu.com/s/1YSD97Gd3gmmPmNkvuG0eew 更多分享資料:https://www.cnblogs.com/javapythonstudy/ 《Python資料分析基礎教程:NumPy學習指南(第2版)》高清中文PDF+高清英文PDF+原始碼 高清

Python資料分析基礎教程NumPy學習指南 第二章 常用函式

目錄 第二章 常用函式 1    檔案讀寫示例 建立對角矩陣: np.eye(2)  儲存為txt檔案:np.savetxt("eye.txt", i2) 2    CSV檔案讀取: loadtxt() 3  &nb

Python資料分析基礎教程NumPy學習指南 第一章 NumPy基礎

目錄 第一章    NumPy基礎 1.1    NumPy陣列物件 關鍵字:array、arange、ndarray、type、dtype、shape、下標 1.2    NumPy資料型別