標籤:

如何高效地學習數據結構——Python篇

原文鏈接:datastudy.cc/to/45

我們來看看如何高效地學習一門語言的數據結構,今天我們先看Python篇。

所謂數據結構,是指相互之間存在一種或多種特定關係的數據類型的集合。

Python在數據分析領域中,最常用的數據結構,莫過於DataFrame了,今天我們就介紹如何高效地學習DataFrame這種數據結構。

要學習好一種東西,最好給自己找一個目標,達到了這個目標,我們就是學好了。一般,我在學習一門新的語言的數據結構的時候,一般要求自己達到以下五個要求:

第一個問題:概念,這種數據結構的概念是什麼呢?

第二個問題:定義,如何定義這種數據結構呢?

第三個問題:限制,使用這種數據結構,有什麼限制呢?

第四個問題:訪問,訪問這種數據結構內的數據的方式是什麼呢?

第五個問題:修改,如何對這種數據結構進行增加元素、刪除元素以及修改元素呢?

好,今天我們就來回答一下以上五個問題。

第一個問題:概念,這種數據結構的概念是什麼呢?

數據框是用於存儲多行和多列的數據集合,下面我們使用一張圖片,形象地講解它的內部結構:

OK,這個就是數據框的概念了。

第二個問題:定義,如何定義這種數據結構呢?

DataFrame函數語法

DataFrame(columnsMap)

代碼舉例 :

>>> df = DataFrame({

age: Series([21, 22, 23]),

name: Series([KEN, John, JIMI])

});

>>> df

age name

0 21 KEN

1 22 John

2 23 JIMI

OK,這個就是定義數據框DataFrame的方法了。

第三個問題:限制,使用這種數據結構,有什麼限制呢?

一般而言,限制是對於這種數據結構是否只能存儲某種數據類型,在Python的數據框中,允許存放多種數據類型,基本上對於默認的數據類型,沒有任何限制。

第四個問題:訪問,訪問這種數據結構內的數據的方式是什麼呢?

訪問位置方法備註訪問列變數名[列名]訪問對應列訪問行變數名[n:m]訪問n行到m-1行的數據訪問行和列變數名.iloc[n1:n2, m1:m2]訪問n1到n2-1列,m1到m2-1行的數據訪問位置變數名.at[n, 列名]訪問n行,列位置

代碼舉例

>>> df[age]

0 21

1 22

2 23

Name: age, dtype: int64

>>> df[1:2]

age name

1 22 John

>>> df.iloc[0:1, 0:2]

age name

0 21 KEN

>>> df.at[0, name]

KEN

>>> df[[age, name]]

age name

0 21 KEN

1 22 John

2 23 JIMI

>>>

第五個問題:修改,如何對這種數據結構進行增加元素、刪除元素以及修改元素呢?

這個問題,我並沒有在課程中跟大家討論過,主要是為了避免大家覺得學習起來很難。

也因此,這篇博文到了這裡才是真正的乾貨,之前的那些都是課程中出現過的內容了,哈哈,

修改包括:

1、修改列名,行索引

2、增加/刪除/修改 行

3、增加/刪除/修改 列

好,下面我們上代碼:

from pandas import Series;

from pandas import DataFrame;

df = DataFrame({

age: Series([21, 22, 23]),

name: Series([KEN, John, JIMI])

});

#1.1、修改列名

>>> df.columns

Index([age, name], dtype=object)

>>> df.columns=[age2, name2]

>>> df

age2 name2

0 21 KEN

1 22 John

2 23 JIMI

#1.2、修改行名

>>> df.index

Int64Index([0, 1, 2], dtype=int64)

>>> df.index = range(1,4)

>>> df.index

Int64Index([1, 2, 3], dtype=int64)

#2.1、刪除行

>>> df.drop(1)

age2 name2

2 22 John

3 23 JIMI

>>> df

age2 name2

1 21 KEN

2 22 John

3 23 JIMI

#注意,刪除後的DataFrame需要一個變數來接收,並不會直接修改原來的DataFrame.

>>> newdf = df.drop(1);

>>> newdf

age2 name2

2 22 John

3 23 JIMI

#2.2、刪除列

>>> del newdf[age2]

>>> newdf

name2

2 John

3 JIMI

#3.1、增加行

>>> df.loc[len(df)+1] = [24, "KENKEN"];

>>> df

age2 name2

1 21 KEN

2 22 John

3 23 JIMI

4 24 KENKEN

#3.2、增加列

>>> df[newColumn] = [2, 4, 6, 8];

>>> df

age2 name2 newColumn

1 21 KEN 2

2 22 John 4

3 23 JIMI 6

4 24 KENKEN 8

以上就是全部五個問題的答案了,通過自問自答這五個問題,我們就可以高效地學習某種數據結構了。
推薦閱讀:

不同需求下可視化圖形選擇(翻譯)
《BI程序猿——2017年總結》
Titanic 數據分析
零基礎學習Python數據分析:科學計算庫NumPy(2)
「有層次、可發展」的門店數字化管理,是通往新零售的必經之路

TAG:數據分析 |