中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Pandas入門教程

回復“資料”可獲贈Python學習福利

聲喧亂石中,色靜深松里。

    大家好,我是皮皮。其實這個pandas教程,卷的很嚴重了,才哥,小P等人寫了很多的文章,這篇文章是粉絲【古月星辰】投稿,自己學習過程中整理的一些基礎資料,整理成文,這里發(fā)出來給大家一起學習。

Pandas入門

本文主要詳細介紹了pandas的各種基礎操作,源文件為zlJob.csv,可以私我進行獲取,下圖是原始數(shù)據(jù)部分一覽。

pandas官網(wǎng):

    https://pandas.pydata.org/pandas-docs/stable/getting_started/index.html

    目錄結構:

    • 生成數(shù)據(jù)表

    • 數(shù)據(jù)表基本操作

    • 數(shù)據(jù)清洗

    • 時間序列

    一.生成數(shù)據(jù)表

    1.1 數(shù)據(jù)讀取

    一般情況下我們得到的數(shù)據(jù)類型大多數(shù)csv或者excel文件,這里僅給出csv,

    • 讀取csv文件

      pd.read_csv()
      • 讀取excel文件

        pd.read_excel()

        1.2 數(shù)據(jù)的創(chuàng)建

        pandas可以創(chuàng)建兩種數(shù)據(jù)類型,series和DataFrame;

        • 創(chuàng)建Series(類似于列表,是一個一維序列)

            s = pd.Series([1,2,3,4,5])

          • 創(chuàng)建dataframe(類似于excel表格,是二維數(shù)據(jù))

              df2 = pd.DataFrame(    {        "A": 1.0,        "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",    })

            二、數(shù)據(jù)表的基本操作

            2.1 數(shù)據(jù)查看

            • 查看前五行

                data.head() # head() 參數(shù)表示前幾行,默認為5

              • 基本信息

                data.shape

                (990, 9)

                  data.dtypes

                  • 查看空值

                    data['name'].isnull() # 查看name這一列是否有空值

                    2.2 行和列的操作

                    • 添加一列

                      dic = {'name':'前端開發(fā)','salary':2萬-2.5萬,  'company':'上海科技有限公司',  'adress':'上海','eduBack':'本科','companyType':'民營',  'scale':1000-10000人,'info':'小程序'}
                      df = pd.Series(dic)df.name = 38738data = data.append(df)data.tail()

                      結果:

                      • 刪除一行

                        data = data.drop([990])
                        • 添加一列

                          data  = data["xx"] = range(len(data))
                          • 刪除一列

                            data = data.drop('序號',axis=1)

                            axis表示軸向,axis=1,表示縱向(刪除一列)

                            2.3 索引操作

                            • loc

                              loc主要是基于標簽(label)的,包括行標簽(index)和列標簽(columns),即行名稱和列名稱,可以使用df.loc[index_name,col_name],選擇指定位置的數(shù)據(jù),其它的用法有:

                            • 1. 使用單個標簽

                                data.loc[10,'salary']#  9千-1.3

                                2. 單個標簽的list

                                  data.loc[:,'name'][:5]

                                  3. 標簽的切片對
                                    data.loc[:,['name','salary']][:5]

                                  • iloc

                                  iloc是基于位置的索引,利用元素在各個軸上的索引序號進行選擇,序號超出范圍會產(chǎn)生IndexError,切片時允許序號超過范圍,用法包括:

                                  1. 使用整數(shù)

                                    data.iloc[2] # 取出索引為2的那一行

                                    2. 使用列表或數(shù)組

                                      data.iloc[:5]

                                      3. 切片對象

                                        data.iloc[:5,:4] # 以,分割,前面切片5行,后面切片4列

                                        常見的方法就如上所示。

                                        2.4 層次化索引

                                        • series層次化索引

                                          s = pd.Series(np.arange(1,10),index=[list('aaabbccdd'),[1,2,3,1,2,3,1,2,3]])

                                          • dataframe層次化索引

                                            df = pd.DataFrame(np.arange(12).reshape(4,3),index=[['a','a','b','b'],[1,2,1,2]],columns=[['X','X','Y'],['m','n','t']])

                                            層次化索引應用于當目標數(shù)據(jù)的特征值很多時,我們需要對多個特征進行分析。

                                            三、數(shù)據(jù)預處理

                                            3.1 缺失值處理

                                            首先創(chuàng)建一個簡單的表格:

                                              df = pd.DataFrame({'state':['a','b','c','d'],'year':[1991,1992,1993,1994],'pop':[6.0,7.0,8.0,np.NaN]})df

                                              結果如下:

                                              判斷缺失值

                                                df['pop'].isnull()

                                                結果如下:

                                                填充缺失值

                                                  df['pop'].fillna(0,inplace=True) # 使用0填充缺失值df

                                                  刪除缺失值

                                                  data.dropna(how = 'all')    # 傳入這個參數(shù)后將只丟棄全為缺失值的那些行 

                                                  結果如下:

                                                  當然還有其他情況:

                                                    data.dropna(axis = 1)       # 丟棄有缺失值的列(一般不會這么做,這樣會刪掉一個特征)data.dropna(axis=1,how="all")   # 丟棄全為缺失值的那些列data.dropna(axis=0,subset = ["Age", "Sex"])   # 丟棄'Age’和'Sex’這兩列中有缺失值的行

                                                    這里就不做一一展示(原理都是一樣的)

                                                    3.2 字符處理

                                                    • 清除字符空格

                                                      df['A']=df['A'].map(str.stri())
                                                      • 大小寫轉換

                                                        df['A'] = df['A'].str.lower()

                                                        3.3 重復值處理

                                                        • 刪除后面出現(xiàn)的重復值

                                                          df['A'] = df['A'].drop_duplicates() # 某一列后出現(xiàn)重復數(shù)據(jù)被清除
                                                          • 刪除先出現(xiàn)的重復值

                                                            df['A'] = df['A'].drop_duplicates(keep=last) # # 某一列先出現(xiàn)重復數(shù)據(jù)被清除
                                                            • 數(shù)據(jù)替換

                                                              df['A'].replace('sh','shanghai') # 同于字符串替換

                                                              四、數(shù)據(jù)表操作

                                                              分組

                                                              groupby

                                                                group = data.groupby(data['name']) # 根據(jù)職位名稱進行分組group

                                                                根據(jù)職位名稱進行分組:

                                                                <pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000265DBD335F8>

                                                                得到一個對象,我們可以去進行平均值,總和計算;

                                                                當然了可以根據(jù)多個特征進行分組,也是沒有問題的;

                                                                聚合

                                                                concat():

                                                                  pd.concat(    objs,    axis=0,    join="outer",    ignore_index=False,    keys=None,    levels=None,    names=None,    verify_integrity=False,    copy=True, )

                                                                  官網(wǎng)參數(shù)解釋如下:

                                                                  • objs: Series 或 DataFrame 對象的序列或映射。如果傳遞了 dict,排序后的鍵將用作keys參數(shù),除非傳遞,在這種情況下將選擇值(見下文)。任何 None 對象都將被靜默刪除,除非它們都是 None 在這種情況下將引發(fā) ValueError 。

                                                                  • axis :{0, 1, …},默認為 0。要沿其連接的軸。

                                                                  • join: {'inner', 'outer'}, 默認為 'outer'。如何處理其他軸上的索引。外部用于聯(lián)合,內部用于交集。

                                                                  • ignore_index: 布爾值,默認為 False。如果為 True,則不要使用串聯(lián)軸上的索引值。結果軸將被標記為 0, …, n - 1。如果您在連接軸沒有有意義的索引信息的情況下連接對象,這將非常有用。請注意,其他軸上的索引值在連接中仍然有效。

                                                                  • keys: 序列,默認無。使用傳遞的鍵作為最外層構建分層索引。如果通過了多個級別,則應包含元組。

                                                                  • levels: 序列列表,默認無。用于構建 MultiIndex 的特定級別(唯一值)。否則,它們將從密鑰中推斷出來。

                                                                  • names: 列表,默認無。生成的分層索引中級別的名稱。

                                                                  • verify_integrity: 布爾值,默認為 False。檢查新的串聯(lián)軸是否包含重復項。相對于實際的數(shù)據(jù)串聯(lián),這可能非常昂貴。

                                                                  • copy: 布爾值,默認為真。如果為 False,則不要不必要地復制數(shù)據(jù)。

                                                                  測試:

                                                                    df1 = pd.DataFrame(    {        "A": ["A0", "A1", "A2", "A3"],        "B": ["B0", "B1", "B2", "B3"],        "C": ["C0", "C1", "C2", "C3"],        "D": ["D0", "D1", "D2", "D3"],    },    index=[0, 1, 2, 3],)
                                                                    df2 = pd.DataFrame( { "A": ["A4", "A5", "A6", "A7"], "B": ["B4", "B5", "B6", "B7"], "C": ["C4", "C5", "C6", "C7"], "D": ["D4", "D5", "D6", "D7"], }, index=[4, 5, 6, 7],)
                                                                    df3 = pd.DataFrame( { "A": ["A8", "A9", "A10", "A11"], "B": ["B8", "B9", "B10", "B11"], "C": ["C8", "C9", "C10", "C11"], "D": ["D8", "D9", "D10", "D11"], }, index=[8, 9, 10, 11],)
                                                                    frames = [df1, df2, df3]
                                                                    result = pd.concat(frames)result

                                                                    結果如下:

                                                                    merge()

                                                                      pd.merge(    left,    right,    how="inner",    on=None,    left_on=None,    right_on=None,    left_index=False,    right_index=False,    sort=True,    suffixes=("_x", "_y"),    copy=True,    indicator=False,    validate=None,)

                                                                      這里給出常用參數(shù)解釋:

                                                                      • left:一個 DataFrame 或命名的 Series 對象;right:另一個 DataFrame 或命名的 Series 對象;

                                                                      • on: 要加入的列或索引級別名稱;

                                                                      • left_on:左側 DataFrame 或 Series 的列或索引級別用作鍵??梢允橇忻Q、索引級別名稱或長度等于 DataFrame 或 Series 長度的數(shù)組;right_on:來自正確 DataFrame 或 Series 的列或索引級別用作鍵??梢允橇忻Q、索引級別名稱或長度等于 DataFrame 或 Series 長度的數(shù)組

                                                                      • left_index:如果True,則使用左側 DataFrame 或 Series 中的索引(行標簽)作為其連接鍵;right_index:與left_index正確的 DataFrame 或 Series 的用法相同;

                                                                      • how: 'left', 'right', 'outer', 之一'inner'。默認為inner. 有關每種方法的更詳細說明,請參見下文。

                                                                      測試:

                                                                        left = pd.DataFrame(    {        "key": ["K0", "K1", "K2", "K3"],        "A": ["A0", "A1", "A2", "A3"],        "B": ["B0", "B1", "B2", "B3"],    })

                                                                        right = pd.DataFrame( { "key": ["K0", "K1", "K2", "K3"], "C": ["C0", "C1", "C2", "C3"], "D": ["D0", "D1", "D2", "D3"], })

                                                                        result = pd.merge(left, right, on="key")result

                                                                        結果如下:

                                                                        相同的字段是'key',所以指定on='key',進行合并。

                                                                        五、時間序列

                                                                        5.1 生成一段時間范圍

                                                                          date = pd.period_range(start='20210913',end='20210919')date

                                                                          輸出結果:

                                                                          PeriodIndex(['2021-09-13', '2021-09-14', '2021-09-15', '2021-09-16',             '2021-09-17', '2021-09-18', '2021-09-19'],            dtype='period[D]', freq='D')

                                                                          5.2 時間序列在pandas中的應用

                                                                            index = pd.period_range(start='20210913',end='20210918')df = pd.DataFrame(np.arange(24).reshape((6,4)),index=index)df

                                                                            輸出結果:

                                                                            六、總結

                                                                                本文基于源文件zlJob.csv,進行了部分pandas操作,演示了pandas庫常見的數(shù)據(jù)處理操作,由于pandas功能復雜,具體詳細講解請參見官網(wǎng):

                                                                              https://pandas.pydata.org/pandas-docs/stable/getting_started/index.html


                                                                              需要源數(shù)據(jù)的小伙伴可以添加我為好友,私我進行獲取。

                                                                              ------------------- End -------------------

                                                                              本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
                                                                              打開APP,閱讀全文并永久保存 查看更多類似文章
                                                                              猜你喜歡
                                                                              類似文章
                                                                              Pandas是數(shù)據(jù)分析必須要學的庫!這是我見過最詳細最牛逼的教程! | 易學教程
                                                                              利用Python進行數(shù)據(jù)分析:【Pandas】(Series+DataFrame)
                                                                              25000字玩轉 Pandas, 這一篇給力了!
                                                                              Python數(shù)據(jù)分析-Pandas
                                                                              Python pandas用法
                                                                              Pandas 中文API文檔
                                                                              更多類似文章 >>
                                                                              生活服務
                                                                              熱點新聞
                                                                              分享 收藏 導長圖 關注 下載文章
                                                                              綁定賬號成功
                                                                              后續(xù)可登錄賬號暢享VIP特權!
                                                                              如果VIP功能使用有故障,
                                                                              可點擊這里聯(lián)系客服!

                                                                              聯(lián)系客服