熱線電話:13121318867

登錄
首頁大數據時代數據分析師教程《Python數據分析極簡入門》第1節 Python基礎知識
數據分析師教程《Python數據分析極簡入門》第1節 Python基礎知識
2024-11-18
收藏

近年來,隨著數據科學的逐步發展,Python語言的使用率也越來越高,不僅可以做數據處理,網頁開發,更是數據科學、機器學習、深度學習等從業者的首選語言。

“工欲善其事,必先利其器?!?要做好數據分析,離不開一個好的編程工具,不論是從Python的語法之簡潔、開發之高效,招聘崗位之熱門來說,Python都是數據科學從業者需要掌握的一門語言。

但一直以來,人們卻誤以為“學會Python”是件很難的事情。

實則不然,這恰恰是我們選擇學Python的理由之一。

事實證明,Python人人皆能學會——千萬別不信。

  • 老少皆宜 —— 也就是說,“只要你愿意”,根本沒有年齡差異。十二歲的孩子可以學;十八歲的大學生可以學;在職工作人員可以學…… 就算你已經退休了,想學就能學,誰也攔不住你。

  • 不分性別,男性可以學,女性同樣可以學,性別差異在這里完全不存在。

  • 不分國界,更沒有區域差異 —— 互聯網的恩惠在于,你在北京、紐約也好,老虎溝、門頭溝也罷,在這個領域里同樣完全沒有任何具體差異。

尤其是在中國?,F狀是,中國的人口密度極高,優質教育資源的確就是稀缺…… 但在計算機科學領域,所有的所謂 “優質教育資源” 事實上完全沒有任何獨特的競爭力 —— 編程領域,實際上是當今世上極為罕見的 “教育機會公平之地”。又不僅在中國如此,事實上,在全球范圍內也都是如此。

多年以前,不識字的人被稱為文盲……

后來,不識英文,也是文盲。人們發現很多科學文獻的主導語言都是英語……

再后來,不會計算機的也算是文盲,因為不會計算機基本操作,很多工作的效率很低下,浪費了很多時間……

近些年,不會數據分析的,也算做文盲了,互聯網高速發展,用戶行為數據越來越多,

你作為一個個體,每天都在產生各種各樣的數據,然后時時刻刻都在被別人使用著、分析著…… 然而你自己卻全然沒有數據分析能力,甚至不知道這事很重要,是不是感覺很可怕?你看看周邊那么多人,有多大的比例想過這事?反正那些天天看機器算法生成的信息流的人好像就是全然不在意自己正在被支配……

怎么辦?學唄,學點編程罷 —— 巧了,這還真是個正常人都能學會的技能。

為便于上手學習,在開始前再做兩點補充

  1. 安裝開發工具

眾所周知,在數據分析相關的編程語言中,有三個重中之重:Python、R、Julia 俗稱數據科學三劍客。如果有一個工具能集中編寫這三者的代碼,為大家省去各種安裝開發工具的時間,那簡直太好不過了,于是jupyter應運而生,作為“工具的工具”而備受數據科學從業者的青睞!

Jupyter的名字就很好地詮釋了這一發集大成的思路,它是 Julia、Python、R 語言的組合,拼寫相近于木星(Jupiter),而且現在支持的語言也遠超這三種了。

所以需要讀者自行下載安裝好Anaconda提供的Jupyter notebook或者jupyter lab,以便于更好地運行本文相關代碼。安裝好后可以直接運行Python,因為里面已經幫你集成好了環境。

  1. 文章閱讀指南

雖然筆者力求極簡,帶你入門Python,但你依然有可能遇到問題,因為編程語言的知識體系有一個特點,知識點之間不是線性的從前往后,而是呈網狀的,經常出現前置引用。所以很多時候可能不經意間就用的是后面的知識點,這是不可避免的,遇到這種情況,注定要反復閱讀若干遍,之所以取名叫極簡入門,這一部分的目標就在與并不是讓你立馬學會就去寫代碼,而是讓你脫盲……

好了,接下來,與大家一起開始我們的Python旋風之旅,沿用之前《極簡統計學入門》、SQL數據分析極簡入門》的“MVP”思路,用三節的內容梳理一下Python數據分析的核心內容。整個系列框架如下:

  • 第1節 Python基礎知識

  • 第2節 Pandas基礎知識

    • 1-Pandas 簡介
    • 2-Pandas 數據類型-
    • 3-Pandas 數據選取-
    • 4-Pandas 條件查詢-
    • 5-Pandas 數據運算-
    • 6-Pandas 合并拼接-
    • 7-Pandas 分組聚合-
    • 8-Pandas 重塑透視-
  • 第3節 Pandas基礎知識

    • 9-Pandas 文本數據
    • 10-Pandas 時間數據
    • 11-Pandas 窗口數據
    • 12-Pandas 數據讀寫
    • 13-Pandas 表格樣式
    • 14-Pandas 數據可視化

如果你接觸過不同編程語言就會發現,任何編程語言的學習,都離不開3個最基本的核心要素,數據類型、流程控制、函數

數據類型是用來描述數據的性質和特征的,它決定了數據在計算和處理過程中的行為和規則。常見的數據類型包括整數、浮點數、字符串、日期等。簡而言之,就是你將要操作的東西具有什么樣的特點。

流程控制是指通過條件判斷和循環等方式,控制程序按照一定的順序執行不同的操作步驟。它決定了數據的處理流程,包括判斷條件、循環次數、分支選擇等。簡而言之,就是你要操作這個東西的基本流程是什么。

函數是一段預先定義好的代碼,用于執行特定的操作或計算。它接受輸入參數,并返回一個結果。函數可以用來對數據進行各種計算、轉換、篩選等操作,以滿足特定的需求。簡而言之,就是你要怎么樣才能可復用地操作這一類東西。

我們來看第一個核心要素:數據類型

數據類型

Python中的數據類型有很多,如果我們按照大類來分,可以分為三大數據類型

① 數字型

整型 int

a = 2022                  # 把2022賦值給a
type(a)                   # 查看數據類型:<class 'int'>
int

浮點型 float

b = -21.9
type(b)                   數據類型:<class 'float'>
float

復數型 complex

c = 11 + 36j
type(c)                   數據類型:<class 'complex'>
complex

布爾型 bool

d = True
type(d)                   數據類型:<class 'bool'>
bool

② 字符串型

str_a = "Certified_Data_Analyst"            # 創建字符串:"Certified_Data_Analyst"
type(str_a)                                 數據類型:<class 'str'>
str
len(str_a)                 # 字符串長度:
22
str_a[0]                   # 輸出字符串第1個字符
'C'
str_a[10]                  # 輸出字符串第11個字符
'D'
str_a[15]                  # 輸出字符串第16個字符
'A'
str_a[:9]                   # 輸出字符串第1到9個字符
'Certified'
str_a[10:14]                # 輸出從第11到14個的字符
'Data'
str_a[15:]                  # 輸出從第15個后的所有字符
'Analyst'
str_a * 2                   # 輸出字符串2次
'Certified_Data_AnalystCertified_Data_Analyst'
str_a+"_Exam"               # 連接字符串 
'Certified_Data_Analyst_Exam'
str_a.upper()               # 轉換為大寫
'CERTIFIED_DATA_ANALYST'
str_a.lower()               # 轉換為小寫
'certified_data_analyst'
int("1024")                 # 字符串轉數字:1024
1024
str(3.14)                   # 數字轉字符串:'3.14'
'3.14'
"Certified_Data_Analyst".split("_")        # 分隔符拆分字符串
['Certified', 'Data', 'Analyst']
"Certified_Data_Analyst".replace("_"" "# 替換字符串"_"為" "
'Certified Data Analyst'
"7".zfill(3)              # 左邊補0
'007'

③ 容器型

可以容納多個元素的的對象叫做容器,這個概念比較抽象,你可以這么理解,容器用來存放不同的元素,根據存放特點的不同,常見的容器有以下幾種:list(列表)、tuple(元組)、dict(字典)、set(集合)

列表 list()

用中括號[]可以創建一個list變量

[2,3,5,7]
[2, 3, 5, 7]

元組 tuple()

用圓括號()可以創建一個tuple變量

(2,3,5,7)
(2, 3, 5, 7)

集合 set()

用花括號{}可以創建一個集合變量

{2,3,5,7}
{2, 3, 5, 7}

字典 dict()

用花括號{}和冒號:,可以創建一個字典變量

{'a':2,'b':3,'c':5,'d':7}
{'a': 2, 'b': 3, 'c': 5, 'd': 7}

流程控制

分支

舉例說明,我們給x賦值-10,然后通過一個分支做判斷,當x大于零時候輸出"x是正數",當x小于零的時候輸出"x是負數",其他情況下輸出"x是零"

x = -10

if x > 0:
    print("x是正數")
elif x < 0:
    print("x是負數")
else:
    print("x是零")
x是負數

循環

舉例說明for循環,用for循環來迭代從1到5的數字,并將每個數字打印出來

# for循環
for i in range(16):
    print(i)
1
2
3
4
5

首先,range(1, 6)函數生成一個序列,從1到5(不包括6)。

然后,for循環使用變量i來迭代這個序列中的每個元素。

在每次迭代中,print(i)語句將當前的i值打印出來。

再舉例說明while循環:用while循環迭代從1到10的數字,并將每個數字打印出來

# while循環
i = 1
while i <= 10:
    print(i)
    i += 1
    if i == 6:
        break
1
20
3
4
5

首先,將i初始化為1。

然后,while循環將在i小于或等于10時執行。在每次循環中,print(i)語句將當前的i值打印出來。

接下來,i += 1語句將i的值遞增。在每次循環中,if i == 6: break語句將檢查i的值是否等于6。如果是,則使用break語句終止循環。

函數

Python提供了許多常用函數,這部分內容數據分析最基礎的內容,有部分函數在Python內置庫就已經自帶

常用函數:

abs(x)           # 返回x的絕對值。

round(x)         # 返回最接近x的整數。如果有兩個整數與x距離相等,將返回偶數。

pow(x, y)        # 返回x的y次方。

sqrt(x)          # 返回x的算術平方根。

max(x1, x2, ...) # 返回一組數中的最大值。

min(x1, x2, ...) # 返回一組數中的最小值。

sum([x1,x2,...]) # 返回可迭代對象中所有元素的和。

也有一些是來自于math庫,我們需要用from math import *來引入math庫,然后才能調用里面的函數。這個過程就好比你要使用一個工具箱里面的工具,必須先找到工具箱。通過使用這些數學函數,可以進行各種數學計算和數據處理操作。

常用數學函數

# 數學運算函數
from math import *

sqrt(x)                              #x的算術平方根

log(x)                               #自然對數

log2(x)                              #以2為底的常用對數

log10(x)                             #以10為底的常用對數

exp(x)                               #x的e次冪

modf(x)                              #返回x的?數部分和整數部分

floor(x)                             #對x向下取值整

ceil(x)                              #對x向上取整

divmod(x,y)                          #接受兩個數字,返回商和余數的元組(x//y , x%y)# 三角函數

sin(x)                               #x的正弦值

cos(x)                               #x的余弦值

tan(x)                               #x的正切值

asin(x)                              #x的反正弦值

acos(x)                              #x的反余弦值

atan(x)                              #x的反正切值# 排列組合函數

# from itertools import *
product()                            #序列中的元素進行排列, 相當于使用嵌套循環組合
permutations(p[, r])                 #從序列p中取出r個元素的組成全排列
combinations(p, r)                   #從序列p中取出r個元素組成全組合,元素不允許重復
combinations_with_replacement(p, r)  #從序列p中取出r個元素組成全組合,允許重復# 簡單統計函數 pandas
describe()                           #描述性統計
count()                              #非空觀測數量
sum()                                #所有值之和
mean()                               #平均值
median()                             #中位數
mode()                               #一組數的眾數
std()                                #標準差
var()                                #方差
min()                                #所有值中的最小值
max()                                #所有值中的最大值
abs()                                #絕對值
prod()                               #數組元素的乘積
corr()                               #相關系數矩陣
cov()                                #協方差矩陣# 排序函數
sort()                                #沒有返回值,會對列表進行原地排序
sorted()                             #需要用一個變量進行接收,不會修改原有列表# 集合運算符號和函數
&                                    #交集
|                                    #并集
-                                    #差集
^                                    #異或集(不相交的部分)
intersection()                       #交集
union()                              #并集
difference()                         #補集
symmetric_difference()               #異或集(不相交的部分)
isdisjoint()                         #兩集合有無相同元素
issubset()                           #是不是子集
issuperset()                         #是不是超集# 缺失值處理(Pandas)
np.nan (Not a Number)                #空值
None                                 #缺失值
pd.NaT                               #時間格式的空值# 判斷缺失值
isnull()/isna()                      #斷SeriesDataFrame中是否包含空值
notnull()                            #與isnull()結果互為取反
isin()                               #判斷SeriesDataFrame中是否包含某些值
dropna()                             #刪除SeriesDataFrame中的空值
fillna()                             #填充SeriesDataFrame中的空值
ffill()/pad()                        #用缺失值的前一個值填充
bfill()/backfill()                   #用缺失值的后一個值填充
replace()                            #替換SeriesDataFrame中的指定值

自定義函數

自定義函數是一種在Python中自行定義的可重復使用代碼塊的方法。通過定義自己的函數,可以將一系列操作放在一個函數中,并在需要時多次調用該函數。

舉例說明,如何創建和調用一個自定義函數:

def linear(x):
    y = 2*x + 4
    return y

在上面的例子中,我們用def linear(x): 定義了一個名為linear的函數,該函數接收一個參數x。

然后函數體內計算了一個y值,它是x的兩倍加上4。

這樣,我們調用linea函數的時候,并傳入一個參數x時,函數將返回計算得到的y值。例如,如果我們調用linear(3),函數將返回10,因為2*3 + 4 = 10。

可以根據具體的需求來編寫自定義函數,并在程序中調用它們。

再看一個稍微復雜一點的例子(PS:建議初學者先跳過這個例子)

# 斐波那契數列(通過迭代方法實現)
def fib(n):
    n1=1;n2=1;n3=1
    if n<1:
        print('輸入有誤!')
        return 0
    else:
        while (n-2) > 0 :
            n3 = n2 + n1
            n1 = n2
            n2 = n3
            n -= 1
        return n3
result = fib(35)
result 
9227465
# 斐波那契數列(通過遞歸方法實現)
def fib(n):
    if n < 1:
        print('輸入有誤!')
        return -1
    elif n == 1 or  n == 2:
        return 1
    else:
        return fib(n-1) + fib(n-2)
result = fib(35)
result
9227465
# 斐波那契數列(通過矩陣方法實現)
import numpy  as np
def dotx(a,n):
    for i in range(1,n+1):
        if i == 1:
            b = a
        else :
            b = np.dot(a,b)
    return b


def fib(n):
    a = np.array([[1,1],[1,0]])
    r = dotx(a,n)
    return r[0,1]
result = fib(35)
result
9227465

下一節 《第2節 Pandas簡介》

這里分享一個你一定用得到的小程序——CDA數據分析師考試小程序。 它是專為CDA數據分析認證考試報考打造的一款小程序??梢詭湍憧焖賵竺荚?、查成績、查證書、查積分,通過該小程序,考生可以享受更便捷的服務。 掃碼加入CDA小程序,與圈內考生一同學習、交流、進步!

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢