久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

如何快速學(xué)會(huì)Python處理數(shù)據(jù),?(5000字走心總結(jié))

 風(fēng)聲之家 2020-10-21

木木自由 昨天

以下文章來源于一個(gè)數(shù)據(jù)人的自留地 ,,作者大師兄

一個(gè)數(shù)據(jù)人的自留地

一個(gè)數(shù)據(jù)人的自留地

數(shù)據(jù)人交流和學(xué)習(xí)的社區(qū),關(guān)注我們,,掌握專業(yè)數(shù)據(jù)知識(shí),、結(jié)識(shí)更多的數(shù)據(jù)小伙伴。

大家好,我是大師兄,。

很多同學(xué)抱怨自己很想學(xué)好Python,,但學(xué)了好久,書也買不少,,視頻課程也看了不少,,但是總是學(xué)了一段時(shí)間,感覺還是沒什么收獲,,碰到問題沒思路,,有思路寫不出多少行代碼,遇到報(bào)錯(cuò)時(shí)也不知道怎么處理,。

從入門到放棄,,這是很多學(xué)習(xí)python的同學(xué)常常掛在嘴邊上的口頭禪。今天我分享一些自己學(xué)習(xí)Python的心得,,并用一個(gè)案例來說明python解決問題的基本思路和框架,。

1 如何學(xué)好Python

1.1 明確自己的需求(最好是剛需)

聽到別人說Python很牛很厲害,也想跟著學(xué),,這樣的人肯定是學(xué)不好python的。沒有明確的需求和動(dòng)力,,就會(huì)導(dǎo)致你學(xué)python兩天打魚三天曬網(wǎng),,沒有恒心也沒有決心。

假如你有明確的需求,,比如:

  • 老板讓我1周內(nèi)完成一個(gè)數(shù)據(jù)分析報(bào)告
  • 老板讓我1個(gè)月內(nèi)搭建一個(gè)自己的blog網(wǎng)站
  • 我要處理很多excel文件,,我想寫一個(gè)腳本幫我自動(dòng)處理
  • 我每天都在手動(dòng)審核數(shù)據(jù)質(zhì)量,我想寫一個(gè)腳本代替我的日常工作
  • .......

當(dāng)你面對(duì)這樣一些需求時(shí),,你還無法求助他人幫忙時(shí),,這個(gè)時(shí)候,你就必須學(xué)習(xí)Python來幫你處理了,。

1.2 明確Python的學(xué)習(xí)方向

Python的學(xué)習(xí)方向有很多,,比如:

  • WEB方向
  • GUI方向
  • 數(shù)據(jù)處理方向
  • 數(shù)據(jù)分析方向
  • 人工智能方向
  • ......

我是日常用Python主要做數(shù)據(jù)處理和數(shù)據(jù)分析工作,所以我選擇的是數(shù)據(jù)處理和數(shù)據(jù)分析方向,,其他Python功能接觸的比較少,。

1.3 掌握Python的基本語法

  • import模塊導(dǎo)入方法
  • 變量及基本數(shù)據(jù)類型
  • 循環(huán)和條件基本控制語句
  • 模塊內(nèi)嵌函數(shù)和自定義函數(shù)
  • ......

不管你選擇了什么方向,Python的基本語法是必須掌握的,。對(duì)于沒有編程經(jīng)驗(yàn)的人,,Python是一門非常適合入門的編程語言,因?yàn)樗歉叨确庋b的,不需要對(duì)于底層特別了解,也能夠很好學(xué)習(xí)使用。python語法非常簡單,代碼可讀性高,對(duì)于零基礎(chǔ)的人來說更容易接受和使用,。

1.4 掌握Python數(shù)據(jù)處理方法

  • 線性代數(shù)和統(tǒng)計(jì)學(xué)
  • Pandas/Numpy/Matplotlib模塊
  • 數(shù)據(jù)導(dǎo)入,、存儲(chǔ)
  • 數(shù)據(jù)清洗和準(zhǔn)備
  • 數(shù)據(jù)規(guī)整:連接、聯(lián)合、重塑
  • 數(shù)據(jù)整合和分組操作
  • 時(shí)間序列數(shù)據(jù)操作
  • 繪圖和可視化

利用Python做數(shù)據(jù)處理,,線性代數(shù)和統(tǒng)計(jì)學(xué)這兩門基本理論知識(shí)還是要會(huì)點(diǎn),,線性代數(shù)你至少得需要知道矩陣和矩陣運(yùn)算規(guī)則,統(tǒng)計(jì)學(xué)你至少要知道描述性統(tǒng)計(jì),。

常用的Python數(shù)據(jù)處理模塊有Pandas和Numpy這兩個(gè),,這是必須要掌握的,另外,,Matplotlib模塊是數(shù)據(jù)可視化模塊,,也是必須會(huì)的。

數(shù)據(jù)導(dǎo)入,、清洗和準(zhǔn)備,、規(guī)整、分組等操作,,都是數(shù)據(jù)處理中常用的方法,,平常對(duì)比Excel數(shù)據(jù)操作,Python都可以實(shí)現(xiàn),,而且一行簡單的代碼,,就可以操作比較復(fù)雜的數(shù)據(jù)處理方法。

1.5 多練,!多練,!多練!

  • 自己找些小作業(yè)練習(xí)
  • 解決平常工作中的問題
  • 可以嘗試輸出文章

重要的事情說三遍,多練,!多練,!多練!

Python和數(shù)據(jù)分析都是實(shí)踐學(xué)科,,光學(xué)理論,,不練習(xí),是不會(huì)有任何收獲的,,學(xué)完之后不練就忘掉了,。最好的方式,就是先掌握一點(diǎn)基礎(chǔ)語法,,然后把Python融合到工作中,,解決日常工作中碰到的問題。在解決問題的時(shí)候,,你會(huì)碰到各種問題,,可以去"百度"尋找答案。最后,,要定期總結(jié)和輸出,。

特別提示,假如你沒有基礎(chǔ)或者基礎(chǔ)薄弱的話,建議工作期間不要嘗試用Python解決復(fù)雜的問題,,這是一個(gè)很浪費(fèi)時(shí)間的事情,,中間各種問題,會(huì)讓你崩潰,。最終Python沒學(xué)好,,還耽誤了工作。所以,,要利用工作之余的時(shí)間,,把python基礎(chǔ)打扎實(shí)。

2 Python數(shù)據(jù)處理示例

2.1  安裝并搭建python環(huán)境

首先,,需要安裝python,我要推薦Anaconda3,,從事數(shù)據(jù)分析的伙伴們,嚴(yán)重推薦此軟件,!

Anaconda降低了數(shù)據(jù)分析初學(xué)者的學(xué)習(xí)門檻,,因?yàn)檫@個(gè)軟件自帶了python中大概有1000多個(gè)數(shù)據(jù)科學(xué)包,讓你無需單獨(dú)學(xué)習(xí)每個(gè)庫的安裝方法,。另外,,還自帶了Jupter notebook代碼編譯器。現(xiàn)在,,Anaconda和Jupyter notebook已成為數(shù)據(jù)分析的標(biāo)準(zhǔn)環(huán)境,。

具體的安裝方法參考如下鏈接:

https://mp.weixin.qq.com/s/53-KvHGYqCSx8qtUnub_vw

安裝完成后,打開Jupter Notebook,,就可以在上面輸入代碼。

2.2 問題說明

現(xiàn)在工作中面臨一個(gè)批量化文件處理的問題:就是要把每個(gè)二級(jí)文件下csv文件合并到一個(gè)數(shù)據(jù)表里,,同時(shí)要在最終的數(shù)據(jù)表里增加兩列,,一列是一級(jí)文件目錄名稱,另一列是二級(jí)文件目錄名稱,。

  • 總共有105個(gè)一級(jí)文件目錄
  • 每個(gè)一級(jí)文件下有若干個(gè)二級(jí)文件
  • 每個(gè)二級(jí)文件下有若干個(gè)csv格式的數(shù)據(jù)

當(dāng)工作中,,碰到這樣的問題時(shí),我用最笨拙的方法——人工,,一個(gè)一個(gè)文件整理,,但是效率比較低,可能需要一個(gè)人一天的工作量,。當(dāng)然,,我也可以尋找技術(shù)的幫忙,找一個(gè)Java工程師,,這個(gè)問題也很容易解決,但麻煩別人一次,沒問題,。以后碰到類似的問題,總是麻煩,,就不好了。假如自己掌握了Python,,這個(gè)問題就變得很簡單了,。

2.3 程序?qū)崿F(xiàn)

其實(shí)這個(gè)問題,對(duì)于一個(gè)專業(yè)的Python程序員來說,,是一個(gè)再簡單不過的問題,。但是對(duì)于一個(gè)初學(xué)者來說,要解決這個(gè)問題,,恐怕需要費(fèi)一點(diǎn)時(shí)間和腦力,。

編程之前,我是如何思考的:

1,、首先,,要讀取文件名稱,需要引入OS模塊下的listdir函數(shù)

2,、其次,,遍歷所有一級(jí)、二級(jí),、三級(jí)文件名稱,,需要用到for循環(huán)和循環(huán)嵌套

3、然后,,讀取文件下csv表,,需要用到pandas模塊下的read_csv函數(shù)

4、最后,,整理合并后的所有表,,需要用到DataFrame的操作方法

實(shí)現(xiàn)代碼如下:

#導(dǎo)入模塊
import os
import pandas as pd

##定義一個(gè)讀取文件名的函數(shù)
def readname(a):
    filePath="D:\\\\ad_data\\\\"+a+"\\\\"
    name=os.listdir(filePath)
    return name

#聲明初始變量
a=""
name= readname(a)
data_new =pd.Dataframe()

#循環(huán)遍歷文件名稱
for i in name:
    name1=readname(i)
    for j in name1:
        file_path = "D:\\\\ad_data\\\\"+i+"\\\\"+j+"\\\\"
        name3=os.listdir(file_path)
        for t in name3:
            csv_path = "D:\\\\ad_data\\\\"+i+"\\\\"+j+"\\\\"+t
            data=pd.read_csv(csv_path)
            data['廣告主']=i
            data['行業(yè)']=j
            f = lambda x:x[0:7]
            data['日期']=data['日期'].apply(f)
            data['投放費(fèi)用']=data['投放費(fèi)用']/10000
            data=data.drop(columns=['行業(yè)排名'])
            data_new=data_new.append(data)
#導(dǎo)出數(shù)據(jù)
file = os.getcwd() + '\\ad.csv'
data_new.to_csv(file, index=False,encoding='utf_8_sig')

這段代碼雖然簡單,但基本攘括了Python的大部分基本語法,,接下來我?guī)Т蠹乙灰唤馄氏逻@些基本語法,。

  • import語句
  • 聲明變量
  • 數(shù)據(jù)導(dǎo)入和導(dǎo)出
  • 循環(huán)和嵌套循環(huán)
  • 模塊函數(shù)調(diào)用
  • 自定義函數(shù)
  • Lambda表達(dá)式
  • Dataframe及操作

3 Python基本語法詳解

3.1 import詳解

下面程序使用導(dǎo)入整個(gè)模塊的最簡單語法來導(dǎo)入指定模塊:

import os #導(dǎo)入OS模塊
import pandas as pd #導(dǎo)入pandas模塊

使用Python進(jìn)行編程時(shí),有些功能沒必須自己實(shí)現(xiàn),,可以借助Python現(xiàn)有的標(biāo)準(zhǔn)庫或者其他人提供的第三方庫,。像OS和pandas,都是標(biāo)準(zhǔn)庫,,導(dǎo)入后,,就可以在程序中使用其模塊內(nèi)的函數(shù),使用時(shí)必須添加模塊名作為前綴,。

name3=os.listdir(file_path) #導(dǎo)入os模塊下的listdir函數(shù)

假如模塊名長,,就可以取別名,,比如pandas模塊,取別名為pd,。像os模塊,,由于比較簡短,就沒有取別名,。別名的作用,,就是調(diào)用該模塊下的函數(shù)時(shí),減少代碼的復(fù)雜度,。

import pandas as pd
data=pd.read_csv(csv_path)

3.2 數(shù)據(jù)導(dǎo)入和導(dǎo)出

數(shù)據(jù)的導(dǎo)入是數(shù)據(jù)處理和分析的第一步,,日常我使用的比較多的是利用pandas進(jìn)行數(shù)據(jù)輸入和輸出,盡管其他庫中也有許多工具可幫助我們讀取和寫入各種格式的數(shù)據(jù),。

將表格型數(shù)據(jù)讀取為DataFrame對(duì)象是pandas的重要特性

  • read_csv(csv文件輸入函數(shù))
  • read_table(文本文件輸入函數(shù))
  • to_csv(數(shù)據(jù)輸出函數(shù))
#遍歷所有文件路徑,,讀取所有文件下csv文件數(shù)據(jù)
csv_path = "D:\\\\ad_data\\\\"+i+"\\\\"+j+"\\\\"+t
data=pd.read_csv(csv_path)

當(dāng)然,數(shù)據(jù)的輸入,,也有與數(shù)據(jù)庫交互讀取數(shù)據(jù),,也有與WEB API交互讀取數(shù)據(jù),這個(gè)是屬于進(jìn)階的內(nèi)容,,后期帶大家學(xué)習(xí),。

3.3 聲明變量

變量是Python語言中一個(gè)非常重要的概念,其作用就是為Python程序中的某個(gè)值起一個(gè)名字,。類似于"張三",、"李四"一樣的名字。在Python語言中,,聲明變量的同時(shí)需要為其賦值,,畢竟不代表任何值的變量毫無意義。

a="" #聲明一個(gè)空字符類型
data_new =pd.Dataframe() #聲明一個(gè)空數(shù)據(jù)集格式

聲明變量非常簡單,,語法結(jié)構(gòu):等號(hào)(=)左側(cè)是變量名,,右側(cè)是變量值,Python編譯器會(huì)自動(dòng)識(shí)別變量的數(shù)據(jù)類型,。

說到變量,就不得不談Python的基本數(shù)據(jù)類型,,Python有6個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型:

  • Number(數(shù)字)
  • String(字符串)
  • List(列表)
  • Tuple(元組)
  • Set(集合)
  • Dictionary(字典)

學(xué)習(xí)Python,,掌握其基本數(shù)據(jù)類型,特別重要,!重要,!重要!詳細(xì)的介紹,,見:

https://www.runoob.com/python3/python3-data-type.html

3.4 控制語句

我們所見到的程序,,有很多程序都是按照順序從上到下執(zhí)行它們,。如果你想要改變語句流的執(zhí)行順序,也就是說你想讓程序做一些決定,,根據(jù)不同的情況做不同的事情,。這個(gè)時(shí)候,就需要通過控制流語句來實(shí)現(xiàn),。

在Python中有三種控制流語句——if,、for和while。詳細(xì)的知識(shí)點(diǎn),,見如下:

if語法講解

https://www.runoob.com/python/python-if-statement.html

while語法講解

https://www.runoob.com/python/python-while-loop.html

for語法講解

https://www.runoob.com/python/python-for-loop.html

嵌套for語法講解

https://www.runoob.com/python/python-nested-loops.html

本次實(shí)例中,,需要讀取一級(jí)文件目錄名稱、二級(jí)文件目錄名稱,、三級(jí)csv文件目錄名稱,,并逐個(gè)遍歷它,于是選擇了for循環(huán),。for循環(huán)就是個(gè)迭代器,,當(dāng)我們?cè)谑褂胒or循環(huán)時(shí),即重復(fù)運(yùn)行一個(gè)代碼塊,,或者不斷迭代容器對(duì)象中的元素,,比如一些序列對(duì)象,列表,,字典,,元組,甚至文件等,,而for循環(huán)的本質(zhì)取出可迭代對(duì)象中的迭代器然后對(duì)迭代器不斷的操作,。

for i in name: #第一層循環(huán),讀取一級(jí)文件目錄名稱
    for j in name1: #第二層循環(huán),,讀取二級(jí)子文件目錄名稱
        for t in name3: #第三層循環(huán),,讀取csv文件目錄名稱    

3.5 模塊函數(shù)調(diào)用

函數(shù)是組織好的,可重復(fù)使用的,,用來實(shí)現(xiàn)單一,、或者相關(guān)功能的代碼段。

函數(shù)能提高程序的模塊性,,和代碼的重復(fù)利用率,。Python提供了許多標(biāo)準(zhǔn)模塊的內(nèi)建函數(shù),比如os模塊下的listdir函數(shù),,用來讀取文件的名稱,,pandas模塊下的read_csv函數(shù),用來讀取csv文件的數(shù)據(jù),。當(dāng)然,,也可以自己創(chuàng)建函數(shù),,也就是所謂的自定義函數(shù),下一節(jié)詳細(xì)講,。

import os #導(dǎo)入OS模塊
import pandas as pd #導(dǎo)入pandas模塊
name=os.listdir(filePath) #調(diào)用os模塊下的listdir函數(shù)
data=pd.read_csv(csv_path) #調(diào)用pandas模塊下的read_csv函數(shù)

3.6 自定義函數(shù)

我們可以自定義一個(gè)自己想要的功能函數(shù),,通常遵循以下規(guī)則:

  • 函數(shù)代碼塊以def關(guān)鍵詞開頭,后接圓括號(hào)()和參數(shù),。
  • 函數(shù)內(nèi)容以冒號(hào)起始,,并且縮進(jìn)。
  • return結(jié)束函數(shù),,選擇性地返回一個(gè)值給調(diào)用方,。不帶表達(dá)式的return相當(dāng)于返回None。
#自定義一個(gè)函數(shù),,動(dòng)態(tài)傳參,,讀取文件的名稱
def readname(a):
    filePath="D:\\\\ad_data\\\\"+a+"\\\\"
    name=os.listdir(filePath)
    return name

定義一個(gè)函數(shù)只給了函數(shù)一個(gè)名稱,指定了函數(shù)里包含的參數(shù)和代碼結(jié)構(gòu),。這個(gè)函數(shù)的基本機(jī)構(gòu)完成以后,,你就可以通過調(diào)用該函數(shù)來實(shí)現(xiàn)你想要的返回結(jié)果。

a=""
#調(diào)用自定義函數(shù)
name= readname(a) #參數(shù)傳遞,,傳一個(gè)空字符串

3.7 Lamda表達(dá)式

Lambda是一個(gè)表達(dá)式,,定義了一個(gè)匿名函數(shù),代碼x為入口參數(shù),,x[0:7]為函數(shù)體,。非常容易理解,在這里lambda簡化了函數(shù)定義的書寫形式,。使得代碼更為簡潔,,更為直觀易理解。

但是lambda函數(shù),,在Python社區(qū)是一個(gè)存在爭議的函數(shù),,支持方認(rèn)為,Lambda函數(shù)的使用,,使得代碼更加緊湊,。反對(duì)法認(rèn)為該函數(shù)用多了反而看起來不那么清晰。

f = lambda x:x[0:7]
data['日期']=data['日期'].apply(f)

在用pandas做數(shù)據(jù)處理的時(shí)候,,個(gè)人習(xí)慣,,apply+lambda配合使用,可以對(duì)dataframe數(shù)據(jù)集中的列做很多很多事情,。

3.8 Dataframe及操作

DataFrame是一種表格型數(shù)據(jù)結(jié)構(gòu),在概念上,,它跟關(guān)系型數(shù)據(jù)庫的一張表,,Excel里的數(shù)據(jù)表一樣,。

創(chuàng)建一個(gè)DataFrame

#根據(jù)字典創(chuàng)建一個(gè)DataFrame
import pandas as pd 

data = {
    'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
    'year':[2000,2001,2002,2001,2002],
    'pop':[1.5,1.7,3.6,2.4,2.9]
}

frame = pd.DataFrame(data)
frame

#輸出
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9

日常數(shù)據(jù)處理的過程中,通常是通過讀取文件生成DataFrame,,最常用的是read_csv,,read_table方法。下面是最簡單的讀取文件語句,,該方法中有很多重要的參數(shù),,在導(dǎo)入文件時(shí)候,通過這些參數(shù),,可以控制導(dǎo)入數(shù)據(jù)的格式和數(shù)量,。其他創(chuàng)建DataFrame的方式也有很多,比如我經(jīng)常會(huì)從SQL SERVER讀取數(shù)據(jù)來生成,。這里就不詳細(xì)介紹,。

pd.read_csv('C:\\Users\\ivan\\Desktop\\數(shù)據(jù).csv')

DataFrame索引、切片

我們可以根據(jù)列名來選取一列,,返回一個(gè)Series,,同時(shí)也可以對(duì)這一列的數(shù)據(jù)進(jìn)行操作。

#日期格式 2020-07-01,,定義一個(gè)把日轉(zhuǎn)換成月的函數(shù),,轉(zhuǎn)換出2020-07
f = lambda x:x[0:7]
data['日期']=data['日期'].apply(f)

#對(duì)"投放費(fèi)用"這一列進(jìn)行處理,把單位轉(zhuǎn)換成"萬"

data['投放費(fèi)用']=data['投放費(fèi)用']/10000

4 總結(jié)

最后,,我說下Python與Excel之間的關(guān)系,,為什么要拿這兩個(gè)工具比較,因?yàn)楹苋擞X得:

  • 日常工作中,,Excel足夠應(yīng)對(duì)數(shù)據(jù)處理工作
  • 有人寧愿使用Excel賊6,,也不愿意使用python

從根本上來說,Python和excel都可以作為數(shù)據(jù)處理和分析以及展現(xiàn)的工具,,工具本身沒有好與壞,,關(guān)鍵在于使用者的業(yè)務(wù)場(chǎng)景以及使用自身對(duì)工具的掌握程度。當(dāng)兩種工具都能達(dá)到使用者業(yè)務(wù)場(chǎng)景想要的效果時(shí),,使用者會(huì)更傾向于使用自己熟練或者更易于實(shí)現(xiàn)的工具高效地解決實(shí)際問題,。

所以說,日常大部分與數(shù)據(jù)相關(guān)的工作中,,少量數(shù)據(jù)的處理和分析,,excel都足以勝任,除非遇到大樣本數(shù)據(jù)導(dǎo)致excel無法處理或者計(jì)算很慢時(shí),,這時(shí)候python的優(yōu)勢(shì)才會(huì)體現(xiàn)出來,。

除此之外,如果使用者的業(yè)務(wù)場(chǎng)景是報(bào)表呈現(xiàn)時(shí),,excel做出來的結(jié)果直接就是可以交付的結(jié)果,。

當(dāng)然,,當(dāng)面臨大量需要重復(fù)處理的文件或者經(jīng)常要做的數(shù)據(jù)工作,這個(gè)時(shí)候,,如果自動(dòng)化,,會(huì)大大提高工作效率,這個(gè)時(shí)候,,python的優(yōu)勢(shì)也很明顯,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多