<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          為啥我敢說(shuō)Python是數(shù)據(jù)分析界的扛把子語(yǔ)言?

          共 8711字,需瀏覽 18分鐘

           ·

          2024-04-18 21:28

          首先聲明下這篇文字不是賣課的,也不是無(wú)腦吹Python,咱只講事實(shí),認(rèn)認(rèn)真真討論下Python是不是數(shù)據(jù)分析領(lǐng)域最好的語(yǔ)言。

          因?yàn)槲以谥跎峡吹椒浅6嗳嗽趩?wèn)這個(gè)問(wèn)題,想必大家是關(guān)心的。我的觀點(diǎn)是,目前來(lái)看所有編程語(yǔ)言里,做數(shù)據(jù)分析Python是最好的選擇,沒有之一。

          列舉幾個(gè)事實(shí):

          1、Kaggle、天池等數(shù)據(jù)比賽用的最多的語(yǔ)言是Python,其次是R語(yǔ)言。

          2、最新4月TIOBE編程語(yǔ)言排名,Python斷層第一,流行度16.41%,第二是C語(yǔ)言,約10.21%。

          3、NASA處理黑洞圖片所用的工具是Python,Python在NASA內(nèi)部被廣泛用于航天數(shù)據(jù)處理分析。

          4、Chatgpt算法和后端大規(guī)模使用Python,其官方接口就有Python api。

          Python作為數(shù)據(jù)分析的熱門語(yǔ)言有它的必然性,我理解有三個(gè)方面原因。

          一、Python擁有大量數(shù)據(jù)科學(xué)第三方庫(kù)

          這些第三方庫(kù)拿來(lái)即用,廣泛用于數(shù)學(xué)計(jì)算、數(shù)據(jù)處理、數(shù)據(jù)建模、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)等等,極大的節(jié)省了數(shù)據(jù)分析的軟硬件成本。

          • pandas:python中的Excel,用于數(shù)據(jù)處理、分析,非常方便。

          • numpy:用于數(shù)組計(jì)算的庫(kù),大部分機(jī)器學(xué)習(xí)、深度學(xué)習(xí)都基于numpy。

          • scipy:用于數(shù)學(xué)和工程計(jì)算的庫(kù),堪比Matlab。

          • Scikit-Learn:集合了幾乎所有機(jī)器學(xué)習(xí)模型的庫(kù),拿來(lái)即用,非常方便。

          • Matplotlib:用于繪制可視化圖表的庫(kù),沒有什么是它畫不了的圖。

          其他的就更多了,不一一贅述。

          二、Python有Jupyter notebook這樣專門用于數(shù)據(jù)科學(xué)的開發(fā)平臺(tái)

          Kaggle、天池就是基于notebook提供數(shù)據(jù)分析服務(wù),很多公司的數(shù)據(jù)分析平臺(tái)也是基于notebook,搭建在私有或公有云上。

          Jupyter是集編程、筆記、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、可視化、教學(xué)演示、交互協(xié)作等于一體的超級(jí)web應(yīng)用,而且支持python、R、Julia、Scala等超40種語(yǔ)言。

          雖然說(shuō)支持這么多語(yǔ)言,但Python是Jupyter最好的搭檔,因?yàn)镻ython有IPython。Jupyter最大的特點(diǎn)是代碼即寫可即運(yùn)行,其可被應(yīng)用于全過(guò)程計(jì)算:開發(fā)、文檔編寫、運(yùn)行代碼和展示結(jié)果。

          比如我用matplotlib繪制一張曲線圖,只需要輸入腳本代碼并執(zhí)行,便可以在Jupyter上顯示相應(yīng)圖表。

          Jupyter中所有交互計(jì)算、編寫說(shuō)明文檔、數(shù)學(xué)公式、圖片以及其他富媒體形式的輸入和輸出,都是以文檔的形式體現(xiàn)的。

          這些文檔是保存為后綴名為.ipynb的JSON格式文件,不僅便于版本控制,也方便與他人共享。

          此外,文檔還可以導(dǎo)出為:HTML、LaTeX、PDF等格式。

          Jupyter還支持安裝插件,和VsCode類似。插件類型也很豐富,包括了代碼調(diào)試、可視化、文本編輯等等。

          既然同樣是編程工具,那Jupyter和Pycharm、VsCode的使用場(chǎng)景有什么區(qū)別呢?

          Jupyter主要是用來(lái)做數(shù)據(jù)科學(xué),其包含數(shù)據(jù)分析、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、機(jī)器人等等,任何Python數(shù)據(jù)科學(xué)第三方庫(kù)都能在Jupyter上得到很好的應(yīng)用和支持。

          現(xiàn)在幾乎所有的數(shù)據(jù)比賽平臺(tái)都以Jupyter作為編輯工具,在上面實(shí)現(xiàn)各種數(shù)據(jù)分析場(chǎng)景。

          在產(chǎn)品上,Jupyter不僅有簡(jiǎn)潔的Notebook ,還有工作臺(tái)式的Lab,甚至線上平臺(tái)化部署的Hub,對(duì)個(gè)人、團(tuán)隊(duì)、企業(yè)都可以完美支持。

          三、最重要的原因,Python易學(xué)、易用、易讀

          這實(shí)在太關(guān)鍵了,做數(shù)據(jù)分析不會(huì)太去關(guān)注編程語(yǔ)言本身的復(fù)雜特性,越是簡(jiǎn)單越有利于提高效率。

          首先,我不需要關(guān)注代碼的細(xì)節(jié),比如申明類型、編譯、調(diào)試等,因?yàn)槲抑皇怯脕?lái)分析處理數(shù)據(jù),又不要開發(fā)大型軟件,運(yùn)行他個(gè)十幾年。

          其次能用第三方庫(kù),就不需要自己去開發(fā)工具,能極大地提升數(shù)據(jù)分析效率。

          只要結(jié)果完美,其他的并不重要。

          Python就是有這樣的優(yōu)勢(shì),代碼簡(jiǎn)潔,有上千個(gè)數(shù)據(jù)科學(xué)相關(guān)第三方庫(kù)供你使用。

          所以相比其他語(yǔ)言,python最大程度上降低了使用門檻。

          比如說(shuō)構(gòu)建一個(gè)簡(jiǎn)單的分類模型。

          這是Python代碼:

          import numpy as np  
          from sklearn.model_selection import train_test_split  
          from sklearn.linear_model import LogisticRegression  
          from sklearn import metrics  
            
          # 示例數(shù)據(jù)  
          X = np.array([[12], [23], [31], [21], [33], [44], [55]])  
          y = np.array([0011011])

          # 劃分訓(xùn)練集和測(cè)試集  
          X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)  
          # 創(chuàng)建邏輯回歸模型  
          model = LogisticRegression()  
          # 訓(xùn)練模型  
          model.fit(X_train, y_train)  
          # 預(yù)測(cè)測(cè)試集  
          y_pred = model.predict(X_test)  
          # 評(píng)估模型  
          print("Accuracy:", metrics.accuracy_score(y_test, y_pred))  

          這是Java代碼:

          import weka.classifiers.Classifier;  
          import weka.classifiers.functions.SMO;  
          import weka.core.Instances;  
          import weka.core.converters.ConverterUtils.DataSource;  
            
          public class ClassificationExample {  
              public static void main(String[] args) throws Exception {  
                  // 加載數(shù)據(jù)  
                  DataSource source = new DataSource("data.csv");  
                  Instances data = source.getDataSet();  
                  // 設(shè)置類別索引(通常是最后一列)  
                  if (data.classIndex() == -1)  
                      data.setClassIndex(data.numAttributes() - 1);  
                  // 構(gòu)建分類器(這里使用SMO,一種支持向量機(jī)算法)  
                  Classifier cls = new SMO();  
                  // 訓(xùn)練模型  
                  cls.buildClassifier(data);  
                  // 測(cè)試模型  
                  double[] testInstance = {4.54.5}; // 一個(gè)新的測(cè)試實(shí)例  
                  Instances test = new Instances(data, 1); // 創(chuàng)建一個(gè)只包含一個(gè)實(shí)例的數(shù)據(jù)集  
                  test.add(testInstance);  
                  // 對(duì)測(cè)試實(shí)例進(jìn)行分類  
                  double predictedClass = cls.classifyInstance(test.firstInstance());  
                  String className = data.classAttribute().value((int) predictedClass);  
                  // 輸出預(yù)測(cè)結(jié)果  
                  System.out.println("Predicted class for instance [4.5, 4.5]: " + className);  
              }  
          }

          這是C++代碼:

          import weka.classifiers.Classifier;  
          import weka.classifiers.functions.SMO;  
          import weka.core.Instances;  
          import weka.core.converters.ConverterUtils.DataSource;  
            
          public class ClassificationExample {  
              public static void main(String[] args) throws Exception {  
                  // 加載數(shù)據(jù)  
                  DataSource source = new DataSource("data.csv");  
                  Instances data = source.getDataSet();  
                    
                  // 設(shè)置類別索引(通常是最后一列)  
                  if (data.classIndex() == -1)  
                      data.setClassIndex(data.numAttributes() - 1);  
                    
                  // 構(gòu)建分類器(這里使用SMO,一種支持向量機(jī)算法)  
                  Classifier cls = new SMO();  
                    
                  // 訓(xùn)練模型  
                  cls.buildClassifier(data);  
                    
                  // 測(cè)試模型  
                  double[] testInstance = {4.54.5}; // 一個(gè)新的測(cè)試實(shí)例  
                  Instances test = new Instances(data, 1); // 創(chuàng)建一個(gè)只包含一個(gè)實(shí)例的數(shù)據(jù)集  
                  test.add(testInstance);  
                    
                  // 對(duì)測(cè)試實(shí)例進(jìn)行分類  
                  double predictedClass = cls.classifyInstance(test.firstInstance());  
                  String className = data.classAttribute().value((int) predictedClass);  
                    
                  // 輸出預(yù)測(cè)結(jié)果  
                  System.out.println("Predicted class for instance [4.5, 4.5]: " + className);  
              }  
          }

          對(duì)比下,很明顯地能看出來(lái),Python代碼會(huì)更加簡(jiǎn)潔,少了很多語(yǔ)法上的規(guī)則限制,其第三方庫(kù)的使用也更加容易。

          綜上來(lái)說(shuō),從事數(shù)據(jù)分析想要選一個(gè)編程語(yǔ)言,Python是最好的選擇,會(huì)讓你少走一些彎路。

          最后,分享幾本不錯(cuò)的Python數(shù)據(jù)分析入門資料,大家可以在公眾號(hào)后臺(tái)回復(fù):data,即可獲得

          加入知識(shí)星球【我們談?wù)摂?shù)據(jù)科學(xué)】

          600+小伙伴一起學(xué)習(xí)!





          瀏覽 2649
          9點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          9點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天好逼网在线观看 | 豆花视频在线观看一区二区 | 午夜视频免费看 | 伊人天天操天天爱 | 激情国产福利 |