
近年來,隨著數據科學的逐步發展,Python語言的使用率也越來越高,不僅可以做數據處理,網頁開發,更是數據科學、機器學習、深度學習等從業者的首選語言。
“工欲善其事,必先利其器?!?要做好數據分析,離不開一個好的編程工具,不論是從Python的語法之簡潔、開發之高效,招聘崗位之熱門來說,Python都是數據科學從業者需要掌握的一門語言。
但一直以來,人們卻誤以為“學會Python”是件很難的事情。
實則不然,這恰恰是我們選擇學Python的理由之一。
事實證明,Python人人皆能學會——千萬別不信。
老少皆宜 —— 也就是說,“只要你愿意”,根本沒有年齡差異。十二歲的孩子可以學;十八歲的大學生可以學;在職工作人員可以學…… 就算你已經退休了,想學就能學,誰也攔不住你。
不分性別,男性可以學,女性同樣可以學,性別差異在這里完全不存在。
不分國界,更沒有區域差異 —— 互聯網的恩惠在于,你在北京、紐約也好,老虎溝、門頭溝也罷,在這個領域里同樣完全沒有任何具體差異。
尤其是在中國?,F狀是,中國的人口密度極高,優質教育資源的確就是稀缺…… 但在計算機科學領域,所有的所謂 “優質教育資源” 事實上完全沒有任何獨特的競爭力 —— 編程領域,實際上是當今世上極為罕見的 “教育機會公平之地”。又不僅在中國如此,事實上,在全球范圍內也都是如此。
多年以前,不識字的人被稱為文盲……
后來,不識英文,也是文盲。人們發現很多科學文獻的主導語言都是英語……
再后來,不會計算機的也算是文盲,因為不會計算機基本操作,很多工作的效率很低下,浪費了很多時間……
近些年,不會數據分析的,也算做文盲了,互聯網高速發展,用戶行為數據越來越多,
你作為一個個體,每天都在產生各種各樣的數據,然后時時刻刻都在被別人使用著、分析著…… 然而你自己卻全然沒有數據分析能力,甚至不知道這事很重要,是不是感覺很可怕?你看看周邊那么多人,有多大的比例想過這事?反正那些天天看機器算法生成的信息流的人好像就是全然不在意自己正在被支配……
怎么辦?學唄,學點編程罷 —— 巧了,這還真是個正常人都能學會的技能。
為便于上手學習,在開始前再做兩點補充
安裝開發工具 眾所周知,在數據分析相關的編程語言中,有三個重中之重:Python、R、Julia 俗稱數據科學三劍客。如果有一個工具能集中編寫這三者的代碼,為大家省去各種安裝開發工具的時間,那簡直太好不過了,于是jupyter應運而生,作為“工具的工具”而備受數據科學從業者的青睞!
Jupyter的名字就很好地詮釋了這一發集大成的思路,它是 Julia、Python、R 語言的組合,拼寫相近于木星(Jupiter),而且現在支持的語言也遠超這三種了。
所以需要讀者自行下載安裝好Anaconda提供的Jupyter notebook或者jupyter lab,以便于更好地運行本文相關代碼。安裝好后可以直接運行Python,因為里面已經幫你集成好了環境。
文章閱讀指南 雖然筆者力求極簡,帶你入門Python,但你依然有可能遇到問題,因為編程語言的知識體系有一個特點,知識點之間不是線性的從前往后,而是呈網狀的,經常出現前置引用。所以很多時候可能不經意間就用的是后面的知識點,這是不可避免的,遇到這種情況,注定要反復閱讀若干遍,之所以取名叫極簡入門,這一部分的目標就在與并不是讓你立馬學會就去寫代碼,而是讓你脫盲……
好了,接下來,與大家一起開始我們的Python旋風之旅,沿用之前《極簡統計學入門》、《SQL數據分析極簡入門》的“MVP”思路,用三節的內容梳理一下Python數據分析的核心內容。整個系列框架如下:
第1節 Python基礎知識
第2節 Pandas基礎知識
第3節 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變量
[2,3,5,7]
[2, 3, 5, 7]
用圓括號()
可以創建一個tuple變量
(2,3,5,7)
(2, 3, 5, 7)
用花括號{}
可以創建一個集合變量
{2,3,5,7}
{2, 3, 5, 7}
用花括號{}
和冒號:
,可以創建一個字典變量
{'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(1, 6):
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() #斷Series或DataFrame中是否包含空值
notnull() #與isnull()結果互為取反
isin() #判斷Series或DataFrame中是否包含某些值
dropna() #刪除Series或DataFrame中的空值
fillna() #填充Series或DataFrame中的空值
ffill()/pad() #用缺失值的前一個值填充
bfill()/backfill() #用缺失值的后一個值填充
replace() #替換Series或DataFrame中的指定值
自定義函數是一種在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
在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25在當今數字化時代,數據分析師的重要性與日俱增。但許多人在踏上這條職業道路時,往往充滿疑惑: 如何成為一名數據分析師?成為 ...
2025-04-24以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《劉靜:10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda ...
2025-04-23