
近年來,隨著數(shù)據(jù)科學(xué)的逐步發(fā)展,Python語言的使用率也越來越高,不僅可以做數(shù)據(jù)處理,網(wǎng)頁開發(fā),更是數(shù)據(jù)科學(xué)、機器學(xué)習(xí)、深度學(xué)習(xí)等從業(yè)者的首選語言。
“工欲善其事,必先利其器?!?要做好數(shù)據(jù)分析,離不開一個好的編程工具,不論是從Python的語法之簡潔、開發(fā)之高效,招聘崗位之熱門來說,Python都是數(shù)據(jù)科學(xué)從業(yè)者需要掌握的一門語言。
但一直以來,人們卻誤以為“學(xué)會Python”是件很難的事情。
實則不然,這恰恰是我們選擇學(xué)Python的理由之一。
事實證明,Python人人皆能學(xué)會——千萬別不信。
老少皆宜 —— 也就是說,“只要你愿意”,根本沒有年齡差異。十二歲的孩子可以學(xué);十八歲的大學(xué)生可以學(xué);在職工作人員可以學(xué)…… 就算你已經(jīng)退休了,想學(xué)就能學(xué),誰也攔不住你。
不分性別,男性可以學(xué),女性同樣可以學(xué),性別差異在這里完全不存在。
不分國界,更沒有區(qū)域差異 —— 互聯(lián)網(wǎng)的恩惠在于,你在北京、紐約也好,老虎溝、門頭溝也罷,在這個領(lǐng)域里同樣完全沒有任何具體差異。
尤其是在中國?,F(xiàn)狀是,中國的人口密度極高,優(yōu)質(zhì)教育資源的確就是稀缺…… 但在計算機科學(xué)領(lǐng)域,所有的所謂 “優(yōu)質(zhì)教育資源” 事實上完全沒有任何獨特的競爭力 —— 編程領(lǐng)域,實際上是當(dāng)今世上極為罕見的 “教育機會公平之地”。又不僅在中國如此,事實上,在全球范圍內(nèi)也都是如此。
多年以前,不識字的人被稱為文盲……
后來,不識英文,也是文盲。人們發(fā)現(xiàn)很多科學(xué)文獻的主導(dǎo)語言都是英語……
再后來,不會計算機的也算是文盲,因為不會計算機基本操作,很多工作的效率很低下,浪費了很多時間……
近些年,不會數(shù)據(jù)分析的,也算做文盲了,互聯(lián)網(wǎng)高速發(fā)展,用戶行為數(shù)據(jù)越來越多,
你作為一個個體,每天都在產(chǎn)生各種各樣的數(shù)據(jù),然后時時刻刻都在被別人使用著、分析著…… 然而你自己卻全然沒有數(shù)據(jù)分析能力,甚至不知道這事很重要,是不是感覺很可怕?你看看周邊那么多人,有多大的比例想過這事?反正那些天天看機器算法生成的信息流的人好像就是全然不在意自己正在被支配……
怎么辦?學(xué)唄,學(xué)點編程罷 —— 巧了,這還真是個正常人都能學(xué)會的技能。
為便于上手學(xué)習(xí),在開始前再做兩點補充
安裝開發(fā)工具 眾所周知,在數(shù)據(jù)分析相關(guān)的編程語言中,有三個重中之重:Python、R、Julia 俗稱數(shù)據(jù)科學(xué)三劍客。如果有一個工具能集中編寫這三者的代碼,為大家省去各種安裝開發(fā)工具的時間,那簡直太好不過了,于是jupyter應(yīng)運而生,作為“工具的工具”而備受數(shù)據(jù)科學(xué)從業(yè)者的青睞!
Jupyter的名字就很好地詮釋了這一發(fā)集大成的思路,它是 Julia、Python、R 語言的組合,拼寫相近于木星(Jupiter),而且現(xiàn)在支持的語言也遠超這三種了。
所以需要讀者自行下載安裝好Anaconda提供的Jupyter notebook或者jupyter lab,以便于更好地運行本文相關(guān)代碼。安裝好后可以直接運行Python,因為里面已經(jīng)幫你集成好了環(huán)境。
文章閱讀指南 雖然筆者力求極簡,帶你入門Python,但你依然有可能遇到問題,因為編程語言的知識體系有一個特點,知識點之間不是線性的從前往后,而是呈網(wǎng)狀的,經(jīng)常出現(xiàn)前置引用。所以很多時候可能不經(jīng)意間就用的是后面的知識點,這是不可避免的,遇到這種情況,注定要反復(fù)閱讀若干遍,之所以取名叫極簡入門,這一部分的目標(biāo)就在與并不是讓你立馬學(xué)會就去寫代碼,而是讓你脫盲……
好了,接下來,與大家一起開始我們的Python旋風(fēng)之旅,沿用之前《極簡統(tǒng)計學(xué)入門》、《SQL數(shù)據(jù)分析極簡入門》的“MVP”思路,用三節(jié)的內(nèi)容梳理一下Python數(shù)據(jù)分析的核心內(nèi)容。整個系列框架如下:
第1節(jié) Python基礎(chǔ)知識
第2節(jié) Pandas基礎(chǔ)知識
第3節(jié) Pandas基礎(chǔ)知識
如果你接觸過不同編程語言就會發(fā)現(xiàn),任何編程語言的學(xué)習(xí),都離不開3個最基本的核心要素,數(shù)據(jù)類型、流程控制、函數(shù)
數(shù)據(jù)類型是用來描述數(shù)據(jù)的性質(zhì)和特征的,它決定了數(shù)據(jù)在計算和處理過程中的行為和規(guī)則。常見的數(shù)據(jù)類型包括整數(shù)、浮點數(shù)、字符串、日期等。簡而言之,就是你將要操作的東西具有什么樣的特點。
流程控制是指通過條件判斷和循環(huán)等方式,控制程序按照一定的順序執(zhí)行不同的操作步驟。它決定了數(shù)據(jù)的處理流程,包括判斷條件、循環(huán)次數(shù)、分支選擇等。簡而言之,就是你要操作這個東西的基本流程是什么。
函數(shù)是一段預(yù)先定義好的代碼,用于執(zhí)行特定的操作或計算。它接受輸入?yún)?shù),并返回一個結(jié)果。函數(shù)可以用來對數(shù)據(jù)進行各種計算、轉(zhuǎn)換、篩選等操作,以滿足特定的需求。簡而言之,就是你要怎么樣才能可復(fù)用地操作這一類東西。
我們來看第一個核心要素:數(shù)據(jù)類型
Python中的數(shù)據(jù)類型有很多,如果我們按照大類來分,可以分為三大數(shù)據(jù)類型:
整型 int
a = 2022 # 把2022賦值給a
type(a) # 查看數(shù)據(jù)類型:<class 'int'>
int
浮點型 float
b = -21.9
type(b) # 數(shù)據(jù)類型:<class 'float'>
float
復(fù)數(shù)型 complex
c = 11 + 36j
type(c) # 數(shù)據(jù)類型:<class 'complex'>
complex
布爾型 bool
d = True
type(d) # 數(shù)據(jù)類型:<class 'bool'>
bool
str_a = "Certified_Data_Analyst" # 創(chuàng)建字符串:"Certified_Data_Analyst"
type(str_a) # 數(shù)據(jù)類型:<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() # 轉(zhuǎn)換為大寫
'CERTIFIED_DATA_ANALYST'
str_a.lower() # 轉(zhuǎn)換為小寫
'certified_data_analyst'
int("1024") # 字符串轉(zhuǎn)數(shù)字:1024
1024
str(3.14) # 數(shù)字轉(zhuǎn)字符串:'3.14'
'3.14'
"Certified_Data_Analyst".split("_") # 分隔符拆分字符串
['Certified', 'Data', 'Analyst']
"Certified_Data_Analyst".replace("_", " ") # 替換字符串"_"為" "
'Certified Data Analyst'
"7".zfill(3) # 左邊補0
'007'
可以容納多個元素的的對象叫做容器,這個概念比較抽象,你可以這么理解,容器用來存放不同的元素,根據(jù)存放特點的不同,常見的容器有以下幾種:list(列表)、tuple(元組)、dict(字典)、set(集合)
用中括號[]
可以創(chuàng)建一個list變量
[2,3,5,7]
[2, 3, 5, 7]
用圓括號()
可以創(chuàng)建一個tuple變量
(2,3,5,7)
(2, 3, 5, 7)
用花括號{}
可以創(chuàng)建一個集合變量
{2,3,5,7}
{2, 3, 5, 7}
用花括號{}
和冒號:
,可以創(chuàng)建一個字典變量
{'a':2,'b':3,'c':5,'d':7}
{'a': 2, 'b': 3, 'c': 5, 'd': 7}
分支
舉例說明,我們給x
賦值-10,然后通過一個分支做判斷,當(dāng)x大于零時候輸出"x是正數(shù)",當(dāng)x小于零的時候輸出"x是負數(shù)",其他情況下輸出"x是零"
x = -10
if x > 0:
print("x是正數(shù)")
elif x < 0:
print("x是負數(shù)")
else:
print("x是零")
x是負數(shù)
循環(huán)
舉例說明for循環(huán),用for循環(huán)來迭代從1到5的數(shù)字,并將每個數(shù)字打印出來
# for循環(huán)
for i in range(1, 6):
print(i)
1
2
3
4
5
首先,range(1, 6)
函數(shù)生成一個序列,從1到5(不包括6)。
然后,for循環(huán)使用變量i
來迭代這個序列中的每個元素。
在每次迭代中,print(i)
語句將當(dāng)前的i
值打印出來。
再舉例說明while循環(huán):用while循環(huán)迭代從1到10的數(shù)字,并將每個數(shù)字打印出來
# while循環(huán)
i = 1
while i <= 10:
print(i)
i += 1
if i == 6:
break
1
20
3
4
5
首先,將i
初始化為1。
然后,while循環(huán)將在i
小于或等于10時執(zhí)行。在每次循環(huán)中,print(i)
語句將當(dāng)前的i
值打印出來。
接下來,i += 1
語句將i
的值遞增。在每次循環(huán)中,if i == 6: break
語句將檢查i
的值是否等于6。如果是,則使用break
語句終止循環(huán)。
Python提供了許多常用函數(shù),這部分內(nèi)容數(shù)據(jù)分析最基礎(chǔ)的內(nèi)容,有部分函數(shù)在Python內(nèi)置庫就已經(jīng)自帶
常用函數(shù):
abs(x) # 返回x的絕對值。
round(x) # 返回最接近x的整數(shù)。如果有兩個整數(shù)與x距離相等,將返回偶數(shù)。
pow(x, y) # 返回x的y次方。
sqrt(x) # 返回x的算術(shù)平方根。
max(x1, x2, ...) # 返回一組數(shù)中的最大值。
min(x1, x2, ...) # 返回一組數(shù)中的最小值。
sum([x1,x2,...]) # 返回可迭代對象中所有元素的和。
也有一些是來自于math庫,我們需要用from math import *
來引入math庫,然后才能調(diào)用里面的函數(shù)。這個過程就好比你要使用一個工具箱里面的工具,必須先找到工具箱。通過使用這些數(shù)學(xué)函數(shù),可以進行各種數(shù)學(xué)計算和數(shù)據(jù)處理操作。
常用數(shù)學(xué)函數(shù)
# 數(shù)學(xué)運算函數(shù)
from math import *
sqrt(x) #x的算術(shù)平方根
log(x) #自然對數(shù)
log2(x) #以2為底的常用對數(shù)
log10(x) #以10為底的常用對數(shù)
exp(x) #x的e次冪
modf(x) #返回x的?數(shù)部分和整數(shù)部分
floor(x) #對x向下取值整
ceil(x) #對x向上取整
divmod(x,y) #接受兩個數(shù)字,返回商和余數(shù)的元組(x//y , x%y)# 三角函數(shù)
sin(x) #x的正弦值
cos(x) #x的余弦值
tan(x) #x的正切值
asin(x) #x的反正弦值
acos(x) #x的反余弦值
atan(x) #x的反正切值# 排列組合函數(shù)
# from itertools import *
product() #序列中的元素進行排列, 相當(dāng)于使用嵌套循環(huán)組合
permutations(p[, r]) #從序列p中取出r個元素的組成全排列
combinations(p, r) #從序列p中取出r個元素組成全組合,元素不允許重復(fù)
combinations_with_replacement(p, r) #從序列p中取出r個元素組成全組合,允許重復(fù)# 簡單統(tǒng)計函數(shù) pandas
describe() #描述性統(tǒng)計
count() #非空觀測數(shù)量
sum() #所有值之和
mean() #平均值
median() #中位數(shù)
mode() #一組數(shù)的眾數(shù)
std() #標(biāo)準(zhǔn)差
var() #方差
min() #所有值中的最小值
max() #所有值中的最大值
abs() #絕對值
prod() #數(shù)組元素的乘積
corr() #相關(guān)系數(shù)矩陣
cov() #協(xié)方差矩陣# 排序函數(shù)
sort() #沒有返回值,會對列表進行原地排序
sorted() #需要用一個變量進行接收,不會修改原有列表# 集合運算符號和函數(shù)
& #交集
| #并集
- #差集
^ #異或集(不相交的部分)
intersection() #交集
union() #并集
difference() #補集
symmetric_difference() #異或集(不相交的部分)
isdisjoint() #兩集合有無相同元素
issubset() #是不是子集
issuperset() #是不是超集# 缺失值處理(Pandas)
np.nan (Not a Number) #空值
None #缺失值
pd.NaT #時間格式的空值# 判斷缺失值
isnull()/isna() #斷Series或DataFrame中是否包含空值
notnull() #與isnull()結(jié)果互為取反
isin() #判斷Series或DataFrame中是否包含某些值
dropna() #刪除Series或DataFrame中的空值
fillna() #填充Series或DataFrame中的空值
ffill()/pad() #用缺失值的前一個值填充
bfill()/backfill() #用缺失值的后一個值填充
replace() #替換Series或DataFrame中的指定值
自定義函數(shù)是一種在Python中自行定義的可重復(fù)使用代碼塊的方法。通過定義自己的函數(shù),可以將一系列操作放在一個函數(shù)中,并在需要時多次調(diào)用該函數(shù)。
舉例說明,如何創(chuàng)建和調(diào)用一個自定義函數(shù):
def linear(x):
y = 2*x + 4
return y
在上面的例子中,我們用def linear(x):
定義了一個名為linear
的函數(shù),該函數(shù)接收一個參數(shù)x。
然后函數(shù)體內(nèi)計算了一個y值,它是x的兩倍加上4。
這樣,我們調(diào)用linea函數(shù)的時候,并傳入一個參數(shù)x時,函數(shù)將返回計算得到的y值。例如,如果我們調(diào)用linear(3)
,函數(shù)將返回10
,因為2*3 + 4 = 10
。
可以根據(jù)具體的需求來編寫自定義函數(shù),并在程序中調(diào)用它們。
再看一個稍微復(fù)雜一點的例子(PS:建議初學(xué)者先跳過這個例子)
# 斐波那契數(shù)列(通過迭代方法實現(xiàn))
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
# 斐波那契數(shù)列(通過遞歸方法實現(xiàn))
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
# 斐波那契數(shù)列(通過矩陣方法實現(xiàn))
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
下一節(jié) 《第2節(jié) Pandas簡介》
這里分享一個你一定用得到的小程序——CDA數(shù)據(jù)分析師考試小程序。 它是專為CDA數(shù)據(jù)分析認證考試報考打造的一款小程序??梢詭湍憧焖賵竺荚嚒⒉槌煽?、查證書、查積分,通過該小程序,考生可以享受更便捷的服務(wù)。 掃碼加入CDA小程序,與圈內(nèi)考生一同學(xué)習(xí)、交流、進步!
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03