<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Pandas 教程 > 原文: [http://zetcode.com/python/pandas/](http://zetcode.com/python/pandas/) 這是 Pandas 的入門教程。 本教程展示了如何使用 Pandas 庫在 Python 中進行基本數據分析。 代碼示例和數據可在作者的 Github [倉庫](https://github.com/janbodnar/Python-Course/tree/master/datascience/pandas)中獲得。 ## Pandas Pandas 是 BSD 許可的開放源代碼庫,為 Python 編程語言提供了高性能,易于使用的數據結構和數據分析工具。 庫的名稱來自“面板數據”一詞,這是對數據集的計量經濟學術語,其中包括對同一個人在多個時間段內的觀察。 它提供用于操縱數值表和時間序列的數據結構和操作。 主要的兩種數據類型是:`Series`和`DataFrame`。 `DataFrame`是帶有標記軸(行和列)的二維大小可變的,可能是異構的表格數據結構。 它是一個類似于電子表格的數據結構。 `Series`是`DataFrame`的單個列。 `DataFrame`可以看作是`Series`對象的字典。 ## 安裝 Pandas 使用以下命令安裝 Pandas: ```py $ pip3 install pandas ``` 我們使用`pip3`命令安裝`pandas`模塊。 ```py $ pip3 install numpy ``` 一些示例還使用`numpy`。 ## Pandas 簡單的例子 以下是一個簡單的 Pandas 示例。 `simple.py` ```py #!/usr/bin/env python3 import pandas as pd data = [['Alex', 10], ['Ronald', 18], ['Jane', 33]] df = pd.DataFrame(data, columns=['Name', 'Age']) print(df) ``` 在程序中,我們創建一個簡單的`DataFrame`并將其打印到控制臺。 ```py import pandas as pd ``` 我們導入 Pandas 庫。 ```py data = [['Alex', 10], ['Ronald', 18], ['Jane', 33]] ``` 這是要在框架中顯示的數據。 每個嵌套列表在表中都是一行。 請注意,有很多方法可以初始化 Pandas `DataFrame`。 ```py df = pd.DataFrame(data, columns=['Name', 'Age']) ``` 根據數據創建一個`DataFrame`。 我們用`columns`屬性給框架列名。 ```py $ python simple.py Name Age 0 Alex 10 1 Ronald 18 2 Jane 33 ``` 這是輸出。 第一列是行索引。 ## Pandas 改變索引 我們可以更新索引,使其不從 0 開始。 `change_index.py` ```py #!/usr/bin/env python3 import pandas as pd data = [['Alex', 10], ['Ronald', 18], ['Jane', 33]] df = pd.DataFrame(data, columns=['Name', 'Age']) df.index = df.index + 1 print(df) ``` 在示例中,我們將 1 加到索引。 ```py $ python change_index.py Name Age 1 Alex 10 2 Ronald 18 3 Jane 33 ``` 這是輸出。 ## Pandas 標量序列 以下示例創建一系列標量值。 `series_scalar.py` ```py #!/usr/bin/env python3 import pandas as pd s = pd.Series(5, index=[0, 1, 2, 3]) print(s) ``` 我們有一列包含數字。 ```py $ python series_scalar.py 0 5 1 5 2 5 3 5 dtype: int64 ``` 左列是索引。 ## Pandas 序列`ndarray` 我們可以從 numpy `ndarray` 創建一個系列對象。 `series_numpy.py` ```py #!/usr/bin/env python3 import pandas as pd import numpy as np data = np.array(['a', 'b', 'c', 'd']) s = pd.Series(data) print(s) ``` 該示例從`ndarray`創建一列字母。 ```py $ python series_numpy.py 0 a 1 b 2 c 3 d dtype: object ``` 這是輸出。 ## Pandas 序列字典 可以從 Python 字典創建系列。 `series_dict.py` ```py #!/usr/bin/env python3 import pandas as pd import numpy as np data = {'coins' : 22, 'pens' : 3, 'books' : 28} s = pd.Series(data) print(s) ``` 該示例根據一系列項目創建一個系列對象。 ```py $ python series_dict.py coins 22 pens 3 books 28 dtype: int64 ``` 索引由項目名稱組成。 ## Pandas 序列檢索 以下示例從一系列對象中檢索值。 `series_retrieve.py` ```py #!/usr/bin/env python3 import pandas as pd s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']) print(s[0]) print('-----------------------') print(s[1:4]) print('-----------------------') print(s[['a','c','d']]) ``` 該示例從系列對象檢索值。 ```py print(s[0]) ``` 在這里,我們得到一個值。 ```py print(s[1:4]) ``` 我們通過它們的索引檢索行。 ```py print(s[['a','c','d']]) ``` 在這里,我們通過索引標簽獲取值。 ```py $ python series_retrieve.py 1 ----------------------- b 2 c 3 d 4 dtype: int64 ----------------------- a 1 c 3 d 4 dtype: int64 ``` 這是輸出。 ## Pandas 自定義索引 索引列不必是數字。 我們可以創建自己的自定義索引。 `custom_index.py` ```py #!/usr/bin/env python3 import pandas as pd data = {"country": ["Brazil", "Russia", "India", "China", "South Africa"], "capital": ["Brasilia", "Moscow", "New Dehli", "Beijing", "Pretoria"], "area": [8.516, 17.10, 3.286, 9.597, 1.221], "population": [200.4, 143.5, 1252, 1357, 52.98]} frame = pd.DataFrame(data) print(frame) print('------------------------------') frame.index = ["BR", "RU", "IN", "CH", "SA"] print(frame) ``` 在示例中,我們從數據字典創建數據框架。 我們先打印數據框,然后使用`index`屬性更改索引列。 ```py $ python custom_index.py country capital area population 0 Brazil Brasilia 8.516 200.40 1 Russia Moscow 17.100 143.50 2 India New Dehli 3.286 1252.00 3 China Beijing 9.597 1357.00 4 South Africa Pretoria 1.221 52.98 ------------------------------ country capital area population BR Brazil Brasilia 8.516 200.40 RU Russia Moscow 17.100 143.50 IN India New Dehli 3.286 1252.00 CH China Beijing 9.597 1357.00 SA South Africa Pretoria 1.221 52.98 ``` 這是輸出。 ## Pandas 索引、列和值 Pandas`DataFrame`具有三個基本部分:索引,列和值。 `index_vals_cols.py` ```py #!/usr/bin/env python3 import pandas as pd data = [['Alex', 10], ['Ronald', 18], ['Jane', 33]] df = pd.DataFrame(data, columns=['Name', 'Age']) print(f'Index: {df.index}') print(f'Columns: {df.columns}') print(f'Values: {df.values}') ``` 該示例顯示數據框的索引,列和值。 ```py $ python index_vals_cols.py Index: RangeIndex(start=0, stop=3, step=1) Columns: Index(['Name', 'Age'], dtype='object') Values: [['Alex' 10] ['Ronald' 18] ['Jane' 33]] ``` 這是輸出。 ## Pandas 的總和和最大值 下面的示例計算數據幀列中值的總和和最大值。 它還使用`numpy`庫。 `sum_max.py` ```py #!/usr/bin/env python3 import pandas as pd import numpy as np df = pd.DataFrame(np.arange(0, 1200, 2), columns=['A']) # df.index = df.index + 1 print(sum(df['A'])) print(max(df['A'])) # print(df) ``` 該示例計算最大值和值之和。 它使用`numpy`的`arange()`函數生成值數組。 ```py print(sum(df['A'])) ``` 當計算總和值時,我們通過名稱來引用該列。 ```py $ sum_max.py 359400 1198 ``` 這是輸出。 ## Pandas 讀 CSV Pandas 使用`read_csv()`從 CSV 文件讀取數據。 `military_spending.csv` ```py Pos, Country, Amount (Bn. $), GDP 1, United States, 610.0, 3.1 2, China, 228.0, 1.9 3, Saudi Arabia, 69.4, 10.0 4, Russia, 66.3, 4.3 5, India, 63.9, 2.5 6, France, 57.8, 2.3 7, United Kingdom, 47.2, 1.8 8, Japan, 45.4, 0.9 9, Germany, 44.3, 1.2 10, South Korea, 39.2, 2.6 11, Brazil, 29.3, 1.4 12, Italy Italy, 29.2, 1.5 13, Australia Australia, 27.5, 2.0 14, Canada Canada, 20.6, 1.3 15, Turkey Turkey, 18.2, 2.2 ``` 這是一個簡單的 CSV 文件,其中包含有關國家軍事支出的數據。 > **注意**:CSV 文件在第一行中可能具有可選的列名。 `read_from_csv.py` ```py #!/usr/bin/env python3 import pandas as pd df = pd.read_csv("military_spending.csv") print(df.to_string(index=False)) ``` 該示例從`military_spending.csv`文件中讀取所有數據,并以表格格式將其打印到控制臺。 它使用`read_csv()`方法。 ```py print(df.to_string(index=False)) ``` 由于我們有`positions`列,因此我們從輸出中隱藏索引。 ```py $ python read_from_csv.py Pos Country Amount (Bn. $) GDP 1 United States 610.0 3.1 2 China 228.0 1.9 3 Saudi Arabia 69.4 10.0 4 Russia 66.3 4.3 5 India 63.9 2.5 6 France 57.8 2.3 7 United Kingdom 47.2 1.8 8 Japan 45.4 0.9 9 Germany 44.3 1.2 10 South Korea 39.2 2.6 11 Brazil 29.3 1.4 12 Italy Italy 29.2 1.5 13 Australia Australia 27.5 2.0 14 Canada Canada 20.6 1.3 15 Turkey Turkey 18.2 2.2 ``` 這是輸出。 ## Pandas 寫 CSV 用`to_csv()`將`DataFrame`寫入 CSV 文件。 `write_csv.py` ```py #!/usr/bin/env python3 import pandas as pd data = [['Alex', 10], ['Ronald', 18], ['Jane', 33]] df = pd.DataFrame(data, columns=['Name', 'Age']) df.to_csv("users.csv", index=False) ``` 該示例將數據寫入`users.csv`文件。 ## Pandas 隨機行 可以使用`sample()`選擇數據幀中的隨機行。 `random_sample.py` ```py #!/usr/bin/env python3 import pandas as pd df = pd.read_csv("military_spending.csv") print(df.sample(3)) ``` 在該示例中,我們從數據框中打印了三個隨機行。 ## Pandas 數據定位 `to_dict()`將數據框轉換為 Python 字典。 字典可以顯示在不同的數據輸出中。 `data_orient.py` ```py #!/usr/bin/env python3 import pandas as pd data = [['Alex', 10], ['Ronald', 18], ['Jane', 33]] df = pd.DataFrame(data, columns=['Name', 'Age']) print('list') print(df.to_dict(orient='list')) print('************************************') print('series') print(df.to_dict(orient='series')) print('************************************') print('dict') print(df.to_dict(orient='dict')) print('************************************') print('split') print(df.to_dict(orient='split')) print('************************************') print('records') print(df.to_dict(orient='records')) print('************************************') print('index') print(df.to_dict(orient='index')) ``` 該示例以六種不同格式將數據幀打印到控制臺。 ## Pandas 描述 `describe()`方法生成描述性統計數據,該數據統計總結了`NaN`值之外的數據集分布的集中趨勢,離散度和形狀。 `describing.py` ```py #!/usr/bin/env python3 import pandas as pd s1 = pd.Series([1, 2, 3, 4, 5, 6, 7, 8]) s2 = pd.Series([12, 23, 31, 14, 11, 61, 17, 18]) data = {'Vals 1': s1, 'Vals 2': s2} df = pd.DataFrame(data) print(df.describe()) ``` 該示例從數據框中打印描述性統計信息。 ```py $ python describe.py Vals 1 Vals 2 count 8.00000 8.000000 mean 4.50000 23.375000 std 2.44949 16.535136 min 1.00000 11.000000 25% 2.75000 13.500000 50% 4.50000 17.500000 75% 6.25000 25.000000 max 8.00000 61.000000 ``` 這是輸出。 ## Pandas 計數 下一個示例對值進行計數。 您可以在 Github 倉庫中找到`employees.csv`文件。 `counting.py` ```py #!/usr/bin/env python3 import pandas as pd df = pd.read_csv("employees.csv") print(df.count()) print(f'Number of columns: {len(df.columns)}') print(df.shape) ``` `count()`方法計算每列的值數。 用`len(df.columns)`檢索列數。 `shape`返回表示數據幀維數的元組。 ```py $ python counting.py First Name 933 Gender 855 Start Date 1000 Last Login Time 1000 Salary 1000 Bonus % 1000 Senior Management 933 Team 957 dtype: int64 Number of columns: 8 (1000, 8) ``` 請注意,這些列具有不同數量的值,因為缺少某些值。 ## Pandas `head()`和`tail()` 使用`head()`和`tail()`方法,我們可以顯示數據幀的前 n 行和后 n 行。 `head_tail.py` ```py #!/usr/bin/env python3 import pandas as pd df = pd.read_csv("military_spending.csv") print(df.head(4)) print('*******************************************') print(df.tail(4)) ``` 該示例顯示數據框的前四行和后四行。 ```py $ python head_tail.py Pos Country Amount (Bn. $) GDP 0 1 United States 610.0 3.1 1 2 China 228.0 1.9 2 3 Saudi Arabia 69.4 10.0 3 4 Russia 66.3 4.3 ******************************************* Pos Country Amount (Bn. $) GDP 11 12 Italy Italy 29.2 1.5 12 13 Australia Australia 27.5 2.0 13 14 Canada Canada 20.6 1.3 14 15 Turkey Turkey 18.2 2.2 ``` 這是輸出。 ## Pandas 沒有標題和索引 當我們顯示數據框時,我們可以隱藏標題和索引。 `no_header_index.py` ```py #!/usr/bin/env python3 import pandas as pd df = pd.read_csv("military_spending.csv") print(df.head(4).to_string(header=False, index=False)) ``` 通過將`header`和`index`屬性設置為`False`,我們將輸出沒有標題和索引的數據幀。 ```py $ python no_header.py 1 United States 610.0 3.1 2 China 228.0 1.9 3 Saudi Arabia 69.4 10.0 4 Russia 66.3 4.3 ``` 這是輸出。 (值 1 到 4 來自`pos`列。) ## Pandas `loc()` `loc()`方法允許按標簽或布爾數組訪問一組行和列。 `select_loc.py` ```py #!/usr/bin/env python3 import pandas as pd data = {'Items': ['coins', 'pens', 'books'], 'Quantity': [22, 28, 3]} df = pd.DataFrame(data, index=['A', 'B', 'C']) print(df.loc['A']) print('-------------------------------') print(df.loc[['A', 'B'], ['Items']]) ``` 該示例使用`loc()`函數。 ```py print(df.loc['A']) ``` 在這里,我們得到第一行。 我們通過其索引標簽訪問該行。 ```py print(df.loc[['A', 'B'], ['Items']]) ``` 在這里,我們獲得了`Items`列的前兩行。 ```py $ python select_loc.py Items coins Quantity 22 Name: A, dtype: object ------------------------------- Items A coins B pens ``` 這是輸出。 第二個示例顯示如何通過布爾數組選擇。 `select_loc2.py` ```py #!/usr/bin/env python3 import pandas as pd data = {'Items': ['coins', 'pens', 'books'], 'Quantity': [22, 28, 3]} df = pd.DataFrame(data, index=['A', 'B', 'C']) print(df.loc[[True, False, True], ['Items', 'Quantity']]) ``` 該示例通過布爾數組選擇行。 ```py $ select_loc2.py Items Quantity A coins 22 C books 3 ``` 這是輸出。 在第三個示例中,我們在選擇時應用條件。 `select_loc3.py` ```py #!/usr/bin/env python3 import pandas as pd df = pd.read_csv("employees.csv") data = df.loc[(df['Salary'] > 10000) & (df['Salary'] < 50000)] print(data.head(5)) ``` 該示例從`employees.csv`文件中打印出符合條件的前五行:薪水在 10000 至 50000 之間。 ## Pandas `iloc` `iloc`函數允許基于整數位置的索引,以按位置進行選擇。 `select_iloc.py` ```py #!/usr/bin/env python3 import pandas as pd df = pd.read_csv("employees.csv") # integer-location based indexing for selection by position. # Multiple row and column selections using iloc and DataFrame print(df.iloc[0:6]) # first six rows of dataframe print('--------------------------------------') print(df.iloc[:, 0:2]) # first two columns of data frame with all rows print('--------------------------------------') # 1st, 4th, 7th, 25th row + 1st 6th 8th column print(df.iloc[[0, 3, 6, 24], [0, 5, 7]]) print('--------------------------------------') # first 5 rows and 5th, 6th, 7th columns of data frame print(df.iloc[:5, 5:8]) print('--------------------------------------') ``` 該示例顯示了如何使用`iloc()`選擇行和列的各種組合。 ## Pandas 排序 `sort_values()`按升序或降序對系列進行排序。 `sorting.py` ```py #!/usr/bin/env python3 import pandas as pd s1 = pd.Series([2, 1, 4, 5, 3, 8, 7, 6]) s2 = pd.Series([12, 23, 31, 14, 11, 61, 17, 18]) data = {'Col 1': s1, 'Col 2': s2} df = pd.DataFrame(data) print(df.sort_values('Col 1', ascending=True)) print('------------------------------------') print('Sorted') print(df.sort_values('Col 2', ascending=False)) ``` 該示例按升序或降序對列進行排序。 ```py $ python sorting.py Col 1 Col 2 1 1 23 0 2 12 4 3 11 2 4 31 3 5 14 7 6 18 6 7 17 5 8 61 ------------------------------------ Sorted Col 1 Col 2 5 8 61 2 4 31 1 1 23 7 6 18 6 7 17 3 5 14 0 2 12 4 3 11 ``` 這是輸出。 在下一個示例中,我們按多列排序。 `sorting2.py` ```py #!/usr/bin/env python3 import pandas as pd s1 = pd.Series([1, 2, 1, 2, 2, 1, 2, 2]) s2 = pd.Series(['A', 'A', 'B', 'A', 'C', 'C', 'C', 'B']) data = {'Col 1': s1, 'Col 2': s2} df = pd.DataFrame(data) print(df.sort_values(['Col 1', 'Col 2'], ascending=[True, False])) ``` 該示例按包含整數的第一列進行排序。 然后,將考慮第一排序的結果對第二列進行排序。 ```py $ python sorting2.py Col 1 Col 2 5 1 C 2 1 B 0 1 A 4 2 C 6 2 C 7 2 B 1 2 A 3 2 A ``` 這是輸出。 在本教程中,我們使用了 Pandas 庫。 您可能也對以下相關教程感興趣: [Python 教程](/lang/python/), [OpenPyXL 教程](/articles/openpyxl/), [Python Requests 教程](/web/pythonrequests/)和 [Python CSV 教程](/python/csv/), 或列出[所有 Python 教程](/all/#python)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看