国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python 數據分析之 pandas 進階(一)

red_bricks / 3675人閱讀

摘要:所處理的數組是方法可以對指定軸上的索引進行改變增加刪除操作,這將返回原始數據的一個拷貝去掉包含缺失值的行對缺失值進行填充對數據進行布爾填充五合并提供了大量的方法能夠輕松的對和對象進行各種符合各種邏輯關系的合并操作。

導入本篇中使用到的模塊:

    import numpy as np
    import pandas as pd
    from pandas import Series, DataFrame

我們可以調整數據輸出框大小以便觀察:

    pd.set_option("display.width", 200)

一、創建對象
1、可以通過傳遞一個list對象來創建一個Series,pandas會默認創建整型索引:

    s = pd.Series([1,3,5,np.nan,6,8])
    s
    0     1
    1     3
    2     5
    3   NaN
    4     6
    5     8
    dtype: float64

2、通過傳遞一個numpy array,時間索引以及列標簽來創建一個DataFrame:

    dates = pd.date_range("20130101", periods=6)
    df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list("ABCD"))
    dates
    df
    DatetimeIndex(["2013-01-01", "2013-01-02", "2013-01-03", "2013-01-04",
                   "2013-01-05", "2013-01-06"],
                  dtype="datetime64[ns]", freq="D")
     
                A           B            C            D
    2013-01-01    -1.857957    -0.297110    0.135704    0.199878
    2013-01-02    0.139027    1.683491    -1.031190    1.447487
    2013-01-03    -0.596279    -1.211098    1.169525    0.663366
    2013-01-04    0.367213    -0.020313    2.169802    -1.295228
    2013-01-05    0.224122    1.003625    -0.488250    -0.594528
    2013-01-06    0.186073    -0.537019    -0.252442    0.530238

3、通過傳遞一個能夠被轉換成類似序列結構的字典對象來創建一個DataFrame:

    df2 = pd.DataFrame({"A":1.,
                        "B":pd.Timestamp("20130102"),
                        "C":pd.Series(1, index=list(range(4)),dtype="float32"),
                        "D":np.array([3] * 4, dtype="int32"),
                        "E":pd.Categorical(["test","train", "test","train"]),
                        "F":"foo"
                       })
    df2

4、查看不同列的數據類型:

    df2.dtypes 
    A           float64
    B    datetime64[ns]
    C           float32
    D             int32
    E          category
    F            object
    dtype: object

5、使用Tab自動補全功能會自動識別所有的屬性以及自定義的列

二、查看數據
1.查看Frame中頭部和尾部的行:

    df.head() 
                A            B                C            D
    2013-01-01    -1.857957    -0.297110    0.135704    0.199878
    2013-01-02    0.139027    1.683491    -1.031190    1.447487
    2013-01-03    -0.596279    -1.211098    1.169525    0.663366
    2013-01-04    0.367213    -0.020313    2.169802    -1.295228
    2013-01-05    0.224122    1.003625    -0.488250    -0.594528
    df.tail(3)
     
                A            B            C            D
    2013-01-04    0.367213    -0.020313    2.169802    -1.295228
    2013-01-05    0.224122    1.003625    -0.488250    -0.594528
    2013-01-06    0.186073    -0.537019    -0.252442    0.530238

2、顯示索引、列和底層的numpy數據:

    df.index
     
    DatetimeIndex(["2013-01-01", "2013-01-02", "2013-01-03", "2013-01-04",
                   "2013-01-05", "2013-01-06"],
                  dtype="datetime64[ns]", freq="D")
    df.columns
     
    Index(["A", "B", "C", "D"], dtype="object") 

3、describe()函數對于數據的快速統計匯總:

    df.describe()
     
        A            B            C            D
    count    6.000000    6.000000    6.000000    6.000000
    mean    -0.256300    0.103596    0.283858    0.158536
    std    0.854686    1.060269    1.181208    0.973309
    min    -1.857957    -1.211098    -1.031190    -1.295228
    25%    -0.412452    -0.477042    -0.429298    -0.395927
    50%    0.162550    -0.158711    -0.058369    0.365058
    75%    0.214610    0.747641    0.911070    0.630084
    max    0.367213    1.683491    2.169802    1.447487

4、對數據的轉置(tranverse):

    df.T
     
        2013-01-01     2013-01-02     2013-01-03    2013-01-04     2013-01-05     2013-01-06 
            00:00:00        00:00:00        00:00:00        00:00:00        00:00:00        00:00:00
    A    -1.857957    0.139027    -0.596279    0.367213    0.224122    0.186073
    B    -0.297110    1.683491    -1.211098    -0.020313    1.003625    -0.537019
    C    0.135704    -1.031190    1.169525    2.169802    -0.488250    -0.252442
    D    0.199878    1.447487    0.663366    -1.295228    -0.594528    0.530238

5、按軸進行排序:

    df.sort_index(axis=1,ascending=False)
     
                D            C            B            A
    2013-01-01    0.199878    0.135704    -0.297110    -1.857957
    2013-01-02    1.447487    -1.031190    1.683491    0.139027
    2013-01-03    0.663366    1.169525    -1.211098    -0.596279
    2013-01-04    -1.295228    2.169802    -0.020313    0.367213
    2013-01-05    -0.594528    -0.488250    1.003625    0.224122
    2013-01-06    0.530238    -0.252442    -0.537019    0.186073

6、按值進行排序:

    df.sort(columns="B")
     
                A            B            C            D
    2013-01-03    -0.596279    -1.211098    1.169525    0.663366
    2013-01-06    0.186073    -0.537019    -0.252442    0.530238
    2013-01-01    -1.857957    -0.297110    0.135704    0.199878
    2013-01-04    0.367213    -0.020313    2.169802    -1.295228
    2013-01-05    0.224122    1.003625    -0.488250    -0.594528
    2013-01-02    0.139027    1.683491    -1.031190    1.447487

三、選擇數據
以下是將要操作的數組:

    df
     
                A            B            C            D
    2013-01-01    -1.857957    -0.297110    0.135704    0.199878
    2013-01-02    0.139027    1.683491    -1.031190    1.447487
    2013-01-03    -0.596279    -1.211098    1.169525    0.663366
    2013-01-04    0.367213    -0.020313    2.169802    -1.295228
    2013-01-05    0.224122    1.003625    -0.488250    -0.594528
    2013-01-06    0.186073    -0.537019    -0.252442    0.530238

1、獲取數據

(1)、選擇一個多帶帶的列,這將會返回一個Series:

    df["A"]
     
    2013-01-01   -1.857957
    2013-01-02    0.139027
    2013-01-03   -0.596279
    2013-01-04    0.367213
    2013-01-05    0.224122
    2013-01-06    0.186073
    Freq: D, Name: A, dtype: float64

(2)、通過[]進行選擇,即:切片

    df[0:3]
     
                A            B            C             D
    2013-01-01    -1.857957    -0.297110    0.135704    0.199878
    2013-01-02    0.139027    1.683491    -1.031190    1.447487
    2013-01-03    -0.596279    -1.211098    1.169525    0.663366

2、標簽選擇

(1)、使用標簽來獲取一個交叉的區域

    df.loc[dates[0]]
     
    A   -1.857957
    B   -0.297110
    C    0.135704
    D    0.199878
    Name: 2013-01-01 00:00:00, dtype: float64

(2)、通過標簽來在多個軸上進行選擇

    df.loc[:,["A", "B"]]
     
                A              B
    2013-01-01    -1.857957    -0.297110
    2013-01-02    0.139027    1.683491
    2013-01-03    -0.596279    -1.211098
    2013-01-04    0.367213    -0.020313
    2013-01-05    0.224122    1.003625
    2013-01-06    0.186073    -0.537019

(3)、標簽切片

    df.loc["20130102":"20130104", ["A","B"]]
     
                A            B
    2013-01-02    0.139027    1.683491
    2013-01-03    -0.596279    -1.211098
    2013-01-04    0.367213    -0.020313

(4)、對于返回的對象進行維度縮減

    df.loc["20130102", ["A","B"]]
     
    A    0.139027
    B    1.683491
    Name: 2013-01-02 00:00:00, dtype: float64

(5)、獲取一個標量

    df.loc[dates[0], "A"]
     
    -1.8579571971312099

3、位置選擇

(1)、通過傳遞數值進行位置選擇(選擇的是行)

    df.iloc[3]
     
    A    0.367213
    B   -0.020313
    C    2.169802
    D   -1.295228
    Name: 2013-01-04 00:00:00, dtype: float64

(2)、通過數值進行切片

    df.iloc[3:5,0:2]
     
                A             B
    2013-01-04    0.367213    -0.020313
    2013-01-05    0.224122    1.003625

(3)、通過指定一個位置的列表

    df.iloc[[1,2,4],[0,2]]
     
                A            C
    2013-01-02    0.139027    -1.031190
    2013-01-03    -0.596279    1.169525
    2013-01-05    0.224122    -0.488250

(4)、對行進行切片

    df.iloc[1:3,:]
     
                A            B            C            D
    2013-01-02    0.139027    1.683491    -1.031190    1.447487
    2013-01-03    -0.596279    -1.211098    1.169525    0.663366

(5)、獲取特定的值

    df.iloc[1,1]
     
    1.6834910794696132

4、布爾索引

(1)、使用一個多帶帶列的值來選擇數據:

    df[df.A > 0]
     
                A            B             C            D
    2013-01-02    0.139027    1.683491    -1.031190    1.447487
    2013-01-04    0.367213    -0.020313    2.169802    -1.295228
    2013-01-05    0.224122    1.003625    -0.488250    -0.594528
    2013-01-06    0.186073    -0.537019    -0.252442    0.530238

(2)、使用where操作來選擇數據:

    df[df > 0]
     
                A            B            C            D
    2013-01-01    NaN            NaN            0.135704    0.199878
    2013-01-02    0.139027    1.683491    NaN            1.447487
    2013-01-03    NaN            NaN            1.169525    0.663366
    2013-01-04    0.367213    NaN            2.169802    NaN
    2013-01-05    0.224122    1.003625    NaN            NaN
    2013-01-06    0.186073    NaN            NaN            0.530238

(3)、使用isin()方法來過濾:

    df2 = df.copy()
    df2["E"] = ["one", "one", "two", "three", "four", "three"]
    df2
     
                A            B             C            D            E
    2013-01-01    -1.857957    -0.297110    0.135704    0.199878    one
    2013-01-02    0.139027    1.683491    -1.031190    1.447487    one
    2013-01-03    -0.596279    -1.211098    1.169525    0.663366    two
    2013-01-04    0.367213    -0.020313    2.169802    -1.295228    three
    2013-01-05    0.224122    1.003625    -0.488250    -0.594528    four
    2013-01-06    0.186073    -0.537019    -0.252442    0.530238    three
    df2[df2["E"].isin(["two", "four"])]
     
                A            B             C            D            E
    2013-01-03    -0.596279    -1.211098    1.169525    0.663366    two
    2013-01-05    0.224122    1.003625    -0.488250    -0.594528    four

5、設置

(1)、設置一個新的列:

    s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range("20130102", periods=6))
    s1
     
    2013-01-02    1
    2013-01-03    2
    2013-01-04    3
    2013-01-05    4
    2013-01-06    5
    2013-01-07    6
    Freq: D, dtype: int64
    df["F"] = s1
    df
     
                A            B            C            D    F
    2013-01-01    0.000000    0.000000    0.135704    5    NaN
    2013-01-02    0.139027    1.683491    -1.031190    5    1
    2013-01-03    -0.596279    -1.211098    1.169525    5    2
    2013-01-04    0.367213    -0.020313    2.169802    5    3
    2013-01-05    0.224122    1.003625    -0.488250    5    4
    2013-01-06    0.186073    -0.537019    -0.252442    5    5

(2)、設置新值

    df.at[dates[0],"A"] = 0  #通過標簽設置新值
    df.iat[0,1] = 0  #通過位置設置新值
    df.loc[:, "D"] = np.array([5] * len(df))  #通過一個numpy數值設置一組新值
    df
     
                A            B            C            D    F
    2013-01-01    0.000000    0.000000    0.135704    5    NaN
    2013-01-02    0.139027    1.683491    -1.031190    5    1
    2013-01-03    -0.596279    -1.211098    1.169525    5    2
    2013-01-04    0.367213    -0.020313    2.169802    5    3
    2013-01-05    0.224122    1.003625    -0.488250    5    4
    2013-01-06    0.186073    -0.537019    -0.252442    5    5

四、缺失值處理

在pandas中,使用np.nan來代替缺失值,這些值將默認不會包含在計算中。所處理的數組是:

    df
     
                A            B            C            D    F
    2013-01-01    0.000000    0.000000    0.135704    5    NaN
    2013-01-02    0.139027    1.683491    -1.031190    5    1
    2013-01-03    -0.596279    -1.211098    1.169525    5    2
    2013-01-04    0.367213    -0.020313    2.169802    5    3
    2013-01-05    0.224122    1.003625    -0.488250    5    4
    2013-01-06    0.186073    -0.537019    -0.252442    5    5

1、reindex()方法可以對指定軸上的索引進行改變/增加/刪除操作,這將返回原始數據的一個拷貝:

    df1 = df.reindex(index=dates[0:4],columns=list(df.columns) + ["E"])
    df1.loc[dates[0]:dates[1], "E"] = 1
    df1
     
     
                    A            B            C            D    F    E
    2013-01-01    0.000000    0.000000    0.135704    5    NaN    1
    2013-01-02    0.139027    1.683491    -1.031190    5    1    1
    2013-01-03    -0.596279    -1.211098    1.169525    5    2    NaN
    2013-01-04    0.367213    -0.020313    2.169802    5    3    NaN

2、去掉包含缺失值的行:

 df1.dropna(how="any")
  
             A            B            C            D    F    E
 2013-01-02    0.139027    1.683491    -1.03119    5    1    1

3、對缺失值進行填充:

    df1.fillna(value=5)
     
                A            B            C            D    F    E
    2013-01-01    0.000000    0.000000    0.135704    5    5    1
    2013-01-02    0.139027    1.683491    -1.031190    5    1    1
    2013-01-03    -0.596279    -1.211098    1.169525    5    2    5
    2013-01-04    0.367213    -0.020313    2.169802    5    3    5

4、對數據進行布爾填充:

    pd.isnull(df1)
     
                A    B    C    D    F    E
    2013-01-01    False    False    False    False    True    False
    2013-01-02    False    False    False    False    False    False
    2013-01-03    False    False    False    False    False    True
    2013-01-04    False    False    False    False    False    True

五、合并

pandas提供了大量的方法能夠輕松的對Series、DataFrame和Panel對象進行各種符合各種邏輯關系的合并操作。

1、Concat

    df = pd.DataFrame(np.random.randn(10, 4))
    df
     
        0            1            2             3
    0    0.680581    1.918851    0.521201    -0.389951
    1    0.724157    2.282989    0.648427    -0.827308
    2    2.437781    0.232518    1.066197    -0.233117
    3    0.038747    3.174875    -1.384120    0.322864
    4    -0.835962    1.015841    0.042094    -1.903701
    5    0.095194    1.926612    0.512825    0.786349
    6    -1.098231    -0.669381    -0.623124    -0.411114
    7    -1.229527    -0.738026    0.453683    -2.037488
    8    -0.499546    -0.816864    -0.395079    -0.320400
    9    0.850367    1.047287    -1.205815    -1.287821
    pieces = [df[:3], df[3:7], df[7:]]
    # break it into pieces
    pieces
     
    [          0         1         2         3
     0  0.680581  1.918851  0.521201 -0.389951
     1  0.724157  2.282989  0.648427 -0.827308
     2  2.437781  0.232518  1.066197 -0.233117,
               0         1         2         3
     3  0.038747  3.174875 -1.384120  0.322864
     4 -0.835962  1.015841  0.042094 -1.903701
     5  0.095194  1.926612  0.512825  0.786349
     6 -1.098231 -0.669381 -0.623124 -0.411114,
               0         1         2         3
     7 -1.229527 -0.738026  0.453683 -2.037488
     8 -0.499546 -0.816864 -0.395079 -0.320400
     9  0.850367  1.047287 -1.205815 -1.287821]

2、Append將一行連接到一個DataFrame上

    df = pd.DataFrame(np.random.randn(8, 4), columns=["A", "B", "C", "D"])
    df
     
        A            B            C            D
    0    -0.923050    -1.798683    -0.543700    0.983715
    1    -0.031082    1.069746    -0.761914    0.142136
    2    0.178376    -0.984427    0.270601    0.737754
    3    -0.882595    0.057637    -1.027661    -1.829378
    4    0.570082    0.210366    0.805305    -1.233238
    5    0.442322    0.709155    -0.304849    0.885378
    6    -0.218852    0.052263    0.467727    0.832747
    7    0.516890    0.005642    -0.990794    -1.624444
    s = df.iloc[3]
    df.append(s, ignore_index=True)
     
        A            B            C            D
    0    -0.923050    -1.798683    -0.543700    0.983715
    1    -0.031082    1.069746    -0.761914    0.142136
    2    0.178376    -0.984427    0.270601    0.737754
    3    -0.882595    0.057637    -1.027661    -1.829378
    4    0.570082    0.210366    0.805305    -1.233238
    5    0.442322    0.709155    -0.304849    0.885378
    6    -0.218852    0.052263    0.467727    0.832747
    7    0.516890    0.005642    -0.990794    -1.624444
    8    -0.882595    0.057637    -1.027661    -1.829378

以上代碼不想自己試一試嗎?
鐳礦 raquant提供 jupyter(研究) 在線練習學習 python 的機會,無需安裝 python 即可運行 python 程序。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45533.html

相關文章

  • Python 數據分析 pandas 進階(二)

    摘要:九時間序列時區表示時區轉換時區跨度轉換十畫圖圖片描述十一從版本開始,可以在中支持類型的數據。 六、分組 對于group by操作,我們通常是指以下一個或多個操作步驟:(Splitting)按照一些規則將數據分為不同的組(Applying)對于每組數據分別執行一個函數(Combining)將結果組合刀一個數據結構中將要處理的數組是: df = pd.DataFrame({ ...

    lingdududu 評論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • python

    Python裝飾器為什么難理解? 無論項目中還是面試都離不開裝飾器話題,裝飾器的強大在于它能夠在不修改原有業務邏輯的情況下對代碼進行擴展,權限校驗、用戶認證、日志記錄、性能測試、事務處理、緩存等都是裝飾器的絕佳應用場景,它能夠最大程度地對代碼進行復用。 但為什么初學者對裝飾器的理解如此困難,我認為本質上是對Py… Python 實現車牌定位及分割 作者用 Python 實現車牌定位及分割的實踐。 ...

    chenatu 評論0 收藏0
  • Python小世界:項目虛擬環境配置的N種方法

    摘要:三個常用的虛擬環境配置來匯總,如有不適之處,還望各位大佬指正。一個項目對應一個,支持開發環境與正式環境區分。其使用創建環境,以便分隔使用不同版本和不同程序包的項目。 前言 和其他大多數現代編程語言一樣,Python對包和 模塊的下載、存儲以及管理有其自己的一套方法。但是當我們同時開發多個項目工程的時候,不同的項目會將第三方的包存放在相同的路徑下。這就意味著,如果有兩個工程依賴同一個包,但是所...

    kidsamong 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<