Python Pandas 資料分析 - DataFrame 雙維度資料 By 彭彭

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ธ.ค. 2024

ความคิดเห็น • 149

  • @AK-di6xs
    @AK-di6xs 3 ปีที่แล้ว +3

    講CP值那段快笑死XD
    謝謝彭彭老師~
    ================================
    # Pandas 資料分析 - DataFrame
    # 雙維度的資料 : 就像是一個表格,有欄(直向)和列(左右)的概念
    # 建立DataFrame
    # 載入 Pandas 模組
    # import pandas as pd
    # 以字典資料為底,建立 DataFrame
    # pd.DataFrame(字典)
    # 資料索引
    # 資料的獨立編號 : 就像試算表中最左邊的編號
    # 內建索引
    # 載入 Pandas 模組
    # import pandas as pd
    # 以字典資料為底,建立 DataFrame
    # pd.DataFrame(字典)
    # 自訂索引
    # 載入 Pandas 模組
    # import pandas as pd
    # 以字典資料為底,建立 DataFrame
    # pd.DataFrame(字典, index=索引列表)
    # 觀察資料
    # 資料數量
    # import pandas as pd
    # data=pd.DataFrame(字典)
    # 印出 size 屬性
    # print(data.size)
    # 資料形狀
    # import pandas as pd
    # data=pd.DataFrame(字典)
    # 印出 shape 屬性
    # print(data.shape)
    # 資料索引
    # import pandas as pd
    # data=pd.DataFrame(字典,index=索引列表)
    # 印出 index 屬性
    # print(data.index)
    # 取得 [列] [row] 資料
    # 根據順序取一整列
    # import pandas as pd
    # data=pd.DataFrame(字典)
    # 取得一整列 data.iloc[順序]
    # print(data.iloc[1]) # Series 型態 0 代表第一列 1 代表第二列 2 代表第三列
    # 根據索引取一整列
    # improt pandas as pd
    # data=pd.DataFrame(字典,index=索引列表)
    # 取得一整列 data.loc[索引]
    # print(data.loc[索引]) # Series 型態 (要注意沒有i)
    # 取得 [欄] [Column] 資料
    # 欄 (column) 在試算表中直向的資料
    # 根據名稱取一整欄
    # import pandas as pd
    # data=pd.DataFrame(字典)
    # 取得一整欄 data[欄位名稱]
    # print(data[欄位名稱]) # Series 型態
    # 建立新的欄位
    # 建立新的欄位
    # import pandas as pd
    # data=pd.DataFrame(字典)
    # 以下語法建立新的欄位
    # data["新欄位名稱"]=列表資料
    # data["新欄位名稱"]=Series 型態資料
    #=======================================
    # 載入 pandas 模組
    import pandas as pd
    # 資料索引 : pd.DataFrame(字典, index=索引列表)
    data=pd.DataFrame({
    "name":["Amy","Bob","Charles"],
    "salary":[30000,50000,40000]
    },index=["a","b","c"])
    print(data)
    print("==============================")
    # 觀察資料
    print("資料數量",data.size)
    print("資料形狀(列,欄)", data.shape)
    print("資料索引", data.index)
    print("==============================")
    # 取得列(Row/橫向) 的 Series 資料 : 根據順序、根據索引
    print("取得第二列", data.iloc[1],sep="
    ")
    print("==============================")
    print("取得第 c 列", data.loc["c"],sep="
    ")
    print("==============================")
    # 取得欄 (Column/直向) 的 Series 資料 : 根據欄位的名稱
    print("取得 name 欄位", data["name"],sep="
    ")
    names=data["name"] # 取得單維度的 Series 資料
    print("把 name 全部轉大寫",names.str.upper(),sep="
    ")
    print("==============================")
    salaries=data["salary"]
    print("薪水的平均值", salaries.mean())
    print("==============================")
    # 建立新的欄位
    data["revenue"]=[500000,400000,300000] # data[新欄位的名稱]=列表
    data["rank"]=pd.Series([3,6,1], index=["a","b","c"]) # data[新欄位的名稱]=Series 的資料
    data["cp"]=data["revenue"]/data["salary"]
    print(data)

  • @jerry321ab
    @jerry321ab 4 ปีที่แล้ว +6

    花了一週把整個系列看過一次,把許多之前看文字不懂的地方釐清了!太感謝老師了!希望之後還有更多python的影片

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      很高興對你有幫助 :) 會哦,Python 會持續更新的 ~

  • @鄧仕良
    @鄧仕良 3 ปีที่แล้ว +2

    老師您也講得太好了吧!
    每一部分都講得十分詳細
    馬上就懂到底什麼東西怎麼用、叫什麼
    感謝老師!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      謝謝你的回饋,很高興對你有幫助哦:)

  • @高馬克-f1m
    @高馬克-f1m 4 ปีที่แล้ว +2

    老師的影片真的很受用,連沒接觸過的都能夠理解!!看到最後也不會太難~

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      謝謝,也很高興對你有幫助 :)

  • @papa-bl4xd
    @papa-bl4xd 4 ปีที่แล้ว +6

    三天时间看完了,讲的通俗易懂。
    希望老师能够推出更多的更深入的 python 教程,比如引入更多的模块使用,正则技巧等等

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      谢谢,好哦,感谢你的建议 :)

  • @yenyuliu3524
    @yenyuliu3524 4 ปีที่แล้ว +6

    《雙維度的資料》就像是一個表格,有欄和列的概念
    《建立DataFrame》
    # 載入Pandas模組
    import pandas as pd
    # 以字典資料為底,建立DataFrame
    pd.DataFrame(字典)
    *資料索引*
    《資料的獨立編號》試算表excel最左邊的編號
    《內建索引》
    # 載入Pandas模組
    import pandas as pd
    # 以字典資料為底,建立DataFrame
    pd.DataFrame(字典)
    《自訂索引》
    # 載入Pandas模組
    import pandas as pd
    # 以字典資料為底,建立DataFrame
    pd.DataFrame(字典,index=索引列表)
    *觀察資料*
    《資料數量》
    import pandas as pd
    data = pd.DataFrame(字典)
    print(data.size) # 印出size屬性
    《資料形狀》
    import pandas as pd
    data = pd.DataFrame(字典)
    print(data.shape) # 印出shape屬性
    《資料索引》
    import pandas as pd
    data = pd.DataFrame(字典,index=索引列表)
    print(data.index) # 印出index屬性
    *取得「列」資料*
    《整列的資料》列Row在試算表中橫向的資料
    《依據順序取一整列》
    import pandas as pd
    data = pd.DataFrame(字典,index=索引列表)
    # 取得一整列data.iloc[順序]
    print(data[1]) # Series型態
    *取得「列」資料*
    《整欄的資料》欄column在試算表中橫向的資料
    《依據名稱取一整欄》
    import pandas as pd
    data = pd.Series(字典)
    # 取得一整列data[欄位名稱]
    print(data[欄位名稱]) # Series型態
    *建立新的欄位*
    《建立新的欄位》
    import pandas as pd
    data = pd.DataFrame(字典)
    # 以下語法建立新的欄位
    data["新欄位名稱"]=列表資料
    data["新欄位名稱"]=Series型態資料
    # 載入pandas模組
    import pandas as pd
    # 資料索引: pd.DataFrame(字典,index=索引列表)
    data = pd.DataFrame({
    "name":["Amy","Bob","Charles"],
    "salary":[30000,50000,40000]
    }, index=["a","b","c"])
    print(data)
    # >>> name salary
    # >>> 0 Amy 30000
    # >>> 1 Bob 50000
    # >>> 2 Charles 40000
    # 加上自定義索引 , index=["a","b","c"]
    # >>> name salary
    # >>> a Amy 30000
    # >>> b Bob 50000
    # >>> c Charles 40000
    print("====================")
    # 觀察資料
    print("資料數量",data.size)
    print("資料形狀(列,欄)",data.shape)
    print("資料索引",data.index)
    # >>> 資料數量 6
    # >>> 資料形狀(列,欄) (3, 2)
    # >>> 資料索引 Index(['a', 'b', 'c'], dtype='object')
    # 取得列(Row/橫向)的Series資料:根據順序、根據索引
    print("取得第二列", data.iloc[1], sep="
    ")
    print("====================")
    print("取得第c列", data.loc["c"], sep="
    ")
    # >>> 取得第二列
    # >>> name Bob
    # >>> salary 50000
    # >>> Name: b, dtype: object
    # >>> ====================
    # >>> 取得第c列
    # >>> name Charles
    # >>> salary 40000
    # >>> Name: c, dtype: object
    # 取得欄(Column/直向)的Series資料:根據欄位的名稱
    print("取得name欄位", data["name"], sep="
    ")
    names = data["name"] # 取得單維度的Series資料
    print("把name全部轉大寫", names.str.upper(),sep="
    ")
    # >>> 取得name欄位
    # >>> a Amy
    # >>> b Bob
    # >>> c Charles
    # >>> Name: name, dtype: object
    # >>> 把name全部轉大寫
    # >>> a AMY
    # >>> b BOB
    # >>> c CHARLES
    # >>> Name: name, dtype: object
    salaries = data["salary"]
    print("薪水的平均值", salaries.mean())
    # >>> 薪水的平均值 40000.0
    # 建立新的欄位01
    # data[新的欄位名稱] = 列表
    data["revenue"] = [500000,400000,300000]
    print(data)
    # >>> name salary revenue
    # >>> a Amy 30000 500000
    # >>> b Bob 50000 400000
    # >>> c Charles 40000 300000
    # data[新欄位的名稱] = Series的資料
    data["rank"] = pd.Series([3,6,1], index=["a","b","c"])
    print(data)
    # >>> name salary revenue rank
    # >>> a Amy 30000 500000 3
    # >>> b Bob 50000 400000 6
    # >>> c Charles 40000 300000 1
    # 根據現有欄位複製
    data["cp"] = data["salary"]
    print(data)
    # >>> name salary revenue rank cp
    # >>> a Amy 30000 500000 3 30000
    # >>> b Bob 50000 400000 6 50000
    # >>> c Charles 40000 300000 1 40000
    data["cp"] = data["revenue"]/data["salary"]
    print(data)
    # >>> name salary revenue rank cp
    # >>> a Amy 30000 500000 3 16.666667
    # >>> b Bob 50000 400000 6 8.000000
    # >>> c Charles 40000 300000 1 7.500000

  • @林欣-z1g
    @林欣-z1g 4 ปีที่แล้ว

    5天时间看完了,讲的通俗易懂。
    感觉还是没有用武之地。
    希望老师能够推出更多的更深入的 python 教程,特别是实用性讲学。

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      谢谢你的回馈和建议哦,我会考虑进去的 ~~

  • @gzho2787
    @gzho2787 4 ปีที่แล้ว +2

    新年快樂 彭彭老師,目前已經看完全部課程,很感謝老師的細心教學,期待老師下一堂的課程^^

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      很棒哦,希望對你有幫助 :)

  • @王建文-j2n
    @王建文-j2n 4 ปีที่แล้ว +1

    感謝彭彭老師無私分享,這邊分享遇到的問題,若有錯還請老師指正。有遇到unsupported operand type(s) for /: 'int' and 'str'的問題,且之前還遇到算平均時未能得到平均。最終發現數據類型不對導致此問題,相信有些人也會遇到此問題,因此要記得一開始的資料要宣告好即可。分享資料如下:
    data=pd.DataFrame({
    "name":["Amy", "Bob", "Charles"],
    "salary":["30000","50000","40000"]
    },index=["a", "b", "c"],dtype="float64")

    • @好姓名
      @好姓名 4 ปีที่แล้ว

      "salary":["30000","50000","40000"]
      打錯了 "salary":[30000,50000,40000] 多了冒號便字串

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      很棒的細節訊息 ~~~~~
      也感謝 @好姓名 的回應,確實要注意資料型態的問題沒錯哦 ~

  • @allentony9983
    @allentony9983 5 ปีที่แล้ว +1

    新年快樂~~!!等好久了!!終於更新了~~老師的教學幫助很大~

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      新年快樂 ~~!!~~

  • @jitaoran6973
    @jitaoran6973 2 ปีที่แล้ว

    多谢🙏!考前再过一遍语法,太清晰了

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      谢谢你的回馈,感觉很棒 :)

  • @jackielee4418
    @jackielee4418 4 ปีที่แล้ว

    謝謝彭彭老師,看完了,獲益良多。

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      讚讚,很高興對你有幫助 ~~~~~~

  • @liucalista1643
    @liucalista1643 5 ปีที่แล้ว +2

    老師新年快樂!謝謝您的教學~

  • @t29347790
    @t29347790 4 ปีที่แล้ว +1

    每天下班吃完晚餐後第一件事就是來學新知識 興奮不已

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      哈哈哈哈,這樣感覺很棒 :)

  • @赵乐际-v4g
    @赵乐际-v4g 4 ปีที่แล้ว +1

    感恩老师!谢谢您的精心教学!

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      不会,也谢谢你的回馈呦 :)

  • @affairs27149
    @affairs27149 5 ปีที่แล้ว

    新年快樂,感謝老師的教學,收穫良多

  • @bhliu5567
    @bhliu5567 5 หลายเดือนก่อน +1

    請問彭彭老師
    建立dataframe時,若要特地給index,index要給的是int還是str?
    您影片例子是用 index=["a", "b", "c"]
    a: 若用index=["0", "1", "2"] -> 給string
    b: 還是用index=[0, 1, 2] -> 給int
    若把整個dataframe印出來,看到index那一個column都是長一樣的
    例如以下最左邊那一個column
    name salary rank
    0 amy 3000 3
    1 bob 5000 1
    2 chris 4000 2
    但我實際上去實驗
    若用index=["0", "1", "2"],
    a = data.loc[1]會err,必須要a = data.loc["1"],索引值必須為string
    若用index=[0,1,2],
    a = data.loc["1"]會err,必須要a = data.loc[1],索引值必須為int
    這在使用上將相當困擾
    我怎麼知道目前這個dataframe的index是string還是int?
    因此產生一個疑問: 更改index的好處在哪裡?
    另外
    若讀進excel成為一個dataframe,default的index是否就是 int的0 1 2 ,而非string的0 1 2 ?
    謝謝

  • @老麦-h3f
    @老麦-h3f 2 ปีที่แล้ว

    讲的也太清楚了,太感谢了❤

  • @thegrandgunslinger2868
    @thegrandgunslinger2868 4 ปีที่แล้ว +17

    撐到最後一個影片只有2000 人,是第一個影片的10分之1 XDDDDD

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +9

      能夠全部看完做完真的不容易壓 :)

  • @bhliu5567
    @bhliu5567 5 หลายเดือนก่อน

    請問彭彭老師
    13:37,建立dataframe時,特地給index的好處在哪裡?
    一般在分析excel/csv檔案時,用pandas讀進來變成一個dataframe時,會友需要特地去修改index嗎?
    修改之後,對於往後的應用上有什麼方便之處?
    謝謝

  • @chenlinying16
    @chenlinying16 4 ปีที่แล้ว

    老師,你太好了,在家跟著你學python

  • @neutralname404
    @neutralname404 5 ปีที่แล้ว

    厉害,支持,过几天再看,这几天在看API :)

  • @土牛哥
    @土牛哥 4 ปีที่แล้ว +1

    老师,您好,我看完了您讲的Python基础教程,我觉得讲得非常的仔细,请问您后期还会更新Python教程吗?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      谢谢你的回馈,会哦,我都会慢慢地更新教学内容 :)

  • @kentisking123
    @kentisking123 3 ปีที่แล้ว

    清楚明瞭,感謝!

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      不會,謝謝你的回饋 :)

  • @bhliu5567
    @bhliu5567 5 หลายเดือนก่อน

    您好
    想請教一個疑惑
    看影片到一半就有這個疑惑
    好奇之下實際試試看
    6:02講data.iloc[順序]有看到是Series型態
    6:22講data.loc[索引]有看到是Series型態
    取row出來竟然是Series型態?
    Series我都想像成是column
    如果取row出來變成Series型態,那為何我無法再把這個Series型態塞回去變成一個column?
    ex:
    data = pd.DataFrame({
    "name": ["amy", "bob", "chris"],
    "salary": [3000, 5000, 4000],
    "rank": [3, 1, 2]
    })
    a = data.iloc[1]
    data["new_column"] = a
    印出來新增的這一column會變成Nan
    data =
    name salary rank new_cloumn
    0 amy 3000 3 NaN
    1 bob 5000 1 NaN
    2 chris 4000 2 NaN
    起初我以為是因為取row會橫跨string和int導致型態不符合每個column的形態要一致
    我把name從string改成數字
    data = pd.DataFrame({
    "name": [999, 888, 777],
    "salary": [3000, 5000, 4000],
    "rank": [3, 1, 2]
    })
    a = data.iloc[1]
    data["new_column"] = a
    印出來新增的這一column還是會變成Nan
    data =
    name salary rank new_cloumn
    0 amy 3000 3 NaN
    1 bob 5000 1 NaN
    2 chris 4000 2 NaN
    請問彭彭老師我該如何理解?
    謝謝您

  • @jon.h1652
    @jon.h1652 3 ปีที่แล้ว +1

    老師你好, 可否做一集是講解 groupby 及 aggregate, 謝謝

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +2

      感謝你的建議,我會安排看看的 :))

  • @141blackand
    @141blackand 4 ปีที่แล้ว +2

    謝謝彭彭老師教學。
    請問新增一列應如何做到呢?例如已有a,b,c列,想新增d列 peter 50000 60000 5 ....

    • @aapplefish
      @aapplefish 4 ปีที่แล้ว

      只解了一半XDDDD 變成1234了XDDDDD
      老師,請問要怎麼維持abc?
      import pandas as pd
      data = pd.DataFrame({
      "name":["Amy","Bob","Charles"],
      "salary":[30000,50000,40000]
      }, index=["a","b","c"])
      data["revenue"] = [500000,400000,300000]
      data = data.append({'name' : 'Peter' , 'salary' : 50000, "revenue":60000} , ignore_index=True)
      data["cp"] = data["revenue"]/data["salary"]
      print(data)

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +4

      感謝 @YYL 的回應 :)
      可以把倒數第三行程式稍做修改,就能適當的管理資料的索引,如下:
      data=data.append(pd.DataFrame({"name":["Peter"], "salary":[50000]}, index=["d"]))

    • @涂馨云
      @涂馨云 ปีที่แล้ว

      @@cwpeng-course 老師不好意思,我在新增欄位rank後 使用您上述的語法 想要新增第四列,但是沒有成功,窗口顯示 'DataFrame' object has no attribute 'append'
      我上網查了方法 但還是沒有解決 ~想請問老師 問題是出在哪裡

    • @mengmeng8383
      @mengmeng8383 ปีที่แล้ว +1

      @@涂馨云 我的程式碼與彭彭老師一樣的話會出現以下錯誤:
      AttributeError: 'DataFrame' object has no attribute 'append'. Did you mean: '_append'?
      所以就依照Python給的指示改成:
      data=data._append(pd.DataFrame({"name":["Peter"], "salary":[50000]}, index=["d"]))
      這樣就可以成功了喔

  • @bigeye6525
    @bigeye6525 4 ปีที่แล้ว

    讲的非常好。

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      谢谢 ~

    • @bigeye6525
      @bigeye6525 4 ปีที่แล้ว

      @@cwpeng-course 和大陆相比,你的收费那么低。为为什么不考虑在大陆开讲?再说,现在就业这么烂,机会比台湾多啊

  • @bhliu5567
    @bhliu5567 5 หลายเดือนก่อน

    請問彭彭老師
    pandas的dataframe型態來處理excel/csv的檔案
    這個excel/csv的檔案是否每一個column都要同一種型態,例如都是string or int
    因為看影片的使用,取出column之後的series
    不管是取條件: data["salary"] >= 10000
    還是string轉換大小寫: data["name"].str.upper()
    感覺dataframe使用上都是對一個column來做同樣的處理
    因此,若excel/csv原始檔內的資料排法並非是以column來安排"同樣型態的資料"
    那用pandas分析之前是否要先對excel/csv先進行轉置矩陣?
    謝謝

  • @ソウ君-d6x
    @ソウ君-d6x ปีที่แล้ว +1

    data.loc["d"]=["Key",60000]
    嘗試了一下.這樣可以建立新的列在最後一列之後
    想知道這種情況下有沒有辦法用Series的型態代替列表["Key",60000]
    (我照著建立欄的時候的寫法寫出現ERROR)

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      沒辦法哦,因為 loc 是對應到列 row 的概念,而一個 row 中可能會包含多種型態的資料,這個在本質上和 Series 不合,每個 Series 都是記錄一種型態的資料而已,所以通常用來代表同一個欄位的所有資料。

  • @jackw3358
    @jackw3358 2 ปีที่แล้ว +1

    彭彭老师的讲解非常棒! 清晰顺畅容易操作。 我有一个问题,
    在操作 data["cp"]=data["revenue"]/data["salary"] 时,返回的type error:unsupported operated types for /: 'str' and 'str'
    老师可以解释一下吗?谢谢!

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว +2

      代表你的 data 中的欄位資料是字串的形式,創建資料的時候不要在數字外面加上引號,不然就會變成字串,無法做除法。

    • @涂馨云
      @涂馨云 ปีที่แล้ว

      太開心了 我原本一直找不到自己問題到底在哪,每次看到留言區都能找我自己的錯誤哈哈 太感謝了

    • @張小照
      @張小照 3 หลายเดือนก่อน +1

      @@涂馨云 真的,大家的疑問點都類似

  • @chenwatson1690
    @chenwatson1690 5 ปีที่แล้ว +1

    想請問彭彭老師,在之後有打算教學django的部分嗎?

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      短時間內不會呦,網站伺服器的部份我這邊選擇了 Flask 來做教學 ~

  • @我想學英文
    @我想學英文 2 ปีที่แล้ว

    iloc gets rows (and/or columns) at integer locations.

  • @cookiesky34
    @cookiesky34 2 ปีที่แล้ว +1

    老師請問一下,如果我想要增加一個D列. 是算 sarary revenue的平均 我該怎麼加。目前能做到用.mean()算出平均 然後用,appen的方式加入到下一列,但是不知道要怎麼樣在那一列的0的位置 標示出"mean"這個字,謝謝

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      通常我們不會把 mean() 這種計算後的統計量,放到原始資料的 DataFrame 的後面 ( 類似 Excel 的想像 ),這在資料設計上其實不太順,未來資料有更動的時候該怎麼辦?自然找不到適合的做法,反而是需要的時候計算出來,存放到其他的結構、檔案或直接輸出。

  • @牧野樵歌
    @牧野樵歌 4 ปีที่แล้ว

    大陆这边对于表格横向的部分称作行,纵向的部分称作列,列的概念和彭彭老师讲的正好相反,听的晕晕乎乎的XD

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      XDDDDDDD 希望还勉强过得去 ~~~

  • @雪花寶
    @雪花寶 4 ปีที่แล้ว

    期待進階的python教學

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      好的,我在規劃中,希望今年中之後可以有些著落 ~

  • @yeetangliew9725
    @yeetangliew9725 3 ปีที่แล้ว +1

    老师我在跑 data["cp"]=data["revenue"]/data["salary"] 的时候出现
    TypeError: unsupported operand type(s) for /: 'int' and 'str'
    请问要怎样解决?谢谢

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      因为你的资料里面的 revenue 或 salary 是储存成字串的形式,所以无法做除法哦 ~

  • @paggie90
    @paggie90 4 ปีที่แล้ว +1

    彭彭老師:請問要如將excel的資料讀入python,再進行資料分析??是否有這方面的課程網站可以參閱,謝謝!!

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +5

      可以簡單的試試看:
      import pandas as pd
      df=pd.read_excel("檔案路徑")
      print(df)

    • @張小照
      @張小照 3 หลายเดือนก่อน +1

      @@cwpeng-course 還能匯入excel!!

  • @蔡岳穎-k7z
    @蔡岳穎-k7z 2 ปีที่แล้ว +1

    想請問老師,影片最後得到了cp值的資訊,那若想用max()的方法找到cp=16.666再輸出該列的"name",也就是"Amy"的話該怎麼做呢,謝謝老師

    • @kieratsai
      @kieratsai 2 ปีที่แล้ว

      idxmax() 可以傳回索引值
      idx=data["cp"].idxmax()
      print(data.loc[idx]["name"])

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      感謝 @Kiera Tsai 的說明,非常清楚 :)

  • @dr.nonsense3025
    @dr.nonsense3025 3 ปีที่แล้ว +1

    29:16 慣老闆的啟蒙課程XD

  • @cnlion3360
    @cnlion3360 4 ปีที่แล้ว +1

    讲的很好。不过有点疑惑,我从小学的是横成行,竖成列,竖列也可以叫栏。
    难道台湾是横成列?

    • @dada-ge4es
      @dada-ge4es 4 ปีที่แล้ว +1

      對唷我們是教直行橫列XD

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      是哦,这确实有些落差 ~

  • @Sophia-vp2oj
    @Sophia-vp2oj 5 ปีที่แล้ว

    老師新年快樂~~另外請問要怎麼用pandas讀取及合併多個csv檔案呀?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +2

      感謝 @Winter 的回應,很棒的分享 :)

  • @yichenchen4633
    @yichenchen4633 4 ปีที่แล้ว +1

    老師您好,想請問一下建立新的欄位這邊,如果資料列數有3列,但我只有2列的新資料,只寫2列的話會產生錯誤,這部分要如何處理呢?有方法讓它自動補0或者是Nan之類的嗎?感謝

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +2

      我查了一下想看有沒有簡單的作法,但好像沒找到,所以就直接寫點邏輯來處理,主要概念就是先把資料補滿到現有的數量,之後再塞進去。你可以專注在以下範例的 newColumn 的處理部份:
      import pandas as pd
      data=pd.DataFrame({
      "name":["Bob", "Alice", "John"],
      "age":[30, 20, 15]
      })
      # 資料少了一些
      newColumn=[3000, 2000]
      rows=data.shape[0] # 取得原來資料的 rows 數量,目前是 3
      while len(newColumn)

    • @yichenchen4633
      @yichenchen4633 4 ปีที่แล้ว

      @@cwpeng-course 感謝老師的回覆,參考了您的程式後,感覺好像一開始新欄位先給全0矩陣後,再把想放的值放入就不用想補0的問題了,感謝老師

  • @keithdiscovery
    @keithdiscovery 2 ปีที่แล้ว

    加入會員,重新看一下

  • @austinli80160
    @austinli80160 3 ปีที่แล้ว

    使用預設的索引出現這個
    資料索引 RangeIndex(start=0, stop=3, step=1)
    想問一下stop=3, step=1 是什麼意思呢?

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      從編號 0 開始建立到編號 3 結束,每次往前數 1 個整數。

  • @dannybot520
    @dannybot520 3 ปีที่แล้ว

    新增欄位那裡revenue新增沒附上index,印出會按順序,也沒問題
    但新增rank,後面沒附上index=["a","b","c"],照樣印的出來,可是不是印3,6,1,是三個NaN
    好怪~~ 我以為也會照默認的順序印出

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว +1

      謝謝分享,至於奇怪的部份,可能要看看實際的程式才能進一步判斷了 XD

    • @mengmeng8383
      @mengmeng8383 ปีที่แล้ว +1

      實測發現如果新增欄位的時候使用一般 data[新欄位的名稱]=列表 語法的話,會按照默認順序填入,但如果使用Series較嚴謹的寫法,不加index就會出現NaN

  • @user-rs4vb4zq9o
    @user-rs4vb4zq9o 3 ปีที่แล้ว

    老師您好,想知道如果像是使用Series查詢出max後,要怎麼知道他對應的索引呢?即要如何使用value反查key值呢??🥺️🥺️ 感謝老師

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      有個簡單的做法如下:
      series[欄位名稱==值].index[0]

  • @hank86211
    @hank86211 4 ปีที่แล้ว

    交的很好 謝啦

  • @jimmy-li6pc
    @jimmy-li6pc 5 ปีที่แล้ว

    謝謝你

  • @RL-dh6jh
    @RL-dh6jh 4 ปีที่แล้ว

    老師您好, 請問要如何將以下類型的文字檔轉為 DataFrame
    aaa test1
    bbb test2
    ccc test3

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      你可以參考後面的影片,使用 pd.read_csv(檔案名稱路徑, sep=" ")
      其中 sep 的參數要指定你的 aaa 和 test1 中的區隔符號,看是空白或是 tab 符號。

  • @DAS-kg1vz
    @DAS-kg1vz 2 ปีที่แล้ว

    請問有辦法根據姓名來找出對應的薪水資料嗎?而非透過index

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      後面的教學有提到資料篩選相關的操作,就可以根據特定的欄位來搜尋到想要的資料哦 ~

  • @user-cyh312
    @user-cyh312 3 ปีที่แล้ว

    老師:如果我rank 想用cp 的值 來排名次,該如何輸入

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      得看看錯誤訊息和程式碼,才有辦法幫得上忙哦

  • @starlee8536
    @starlee8536 3 ปีที่แล้ว

    彭彭老師好
    我是用jupyter notebook撰寫程式,我目前遇到的問題是
    項目列name,salary,revenue,都改成中文
    姓名欄也改成中文
    這樣就導致列不會對齊了,是哪裡出了問題

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      這其實沒有太大問題,在終端機的輸出本來就沒有辦法保證對齊,我們比較在意的是他實際的結構是否正確,而不是畫面的呈現。

  • @huahua4987
    @huahua4987 5 ปีที่แล้ว

    请问老师 pandas有针对EXCEL教学吗?

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      目前没有哦,我会考虑看看,谢谢你的建议 :)

  • @yingyang1370
    @yingyang1370 4 ปีที่แล้ว

    你好,请问如果cp值要取整数的话,需要怎么操作

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      整数除法可以使用两条斜线 // 取代 /

  • @tsai94520
    @tsai94520 4 ปีที่แล้ว

    pandas很像無法寫成函式做字串搜尋,很像會型不一樣錯誤?

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      可以的,只是要配合它的特性來做處理,這就要看實際的程式細節了 ~

  • @asdfsadffasfasdf6081
    @asdfsadffasfasdf6081 4 ปีที่แล้ว

    努力中

  • @ellen1014
    @ellen1014 4 ปีที่แล้ว

    請教彭彭老師,我照你的打但試了幾次之後都出現以下訊息,請問是什麼原因呢? 謝謝!
    raceback (most recent call last):
    File "pandas-dataframe.py", line 2, in
    import pandas as pd
    File "C:\Users\shang641\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\__init__.py", line 16, in
    raise ImportError(
    ImportError: Unable to import required dependencies:
    numpy: DLL load failed while importing _umath_linalg: 存取被拒。

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว

      通常是你的電腦中有安裝其他 Python 相關的套件管理工具,例如 Anaconda 之類的東西,如果已經用不到了,建議移除後試試看。

    • @ellen1014
      @ellen1014 4 ปีที่แล้ว

      @@cwpeng-course 謝謝老師回覆, 其實我不太了解什麼是套件管理工具 (資質駑鈍), 我的python版本是3.8.3 (32bit) 爬了很多文以後, 發現用window安裝pandas或numpy似乎滿容易會有這個問題, 後來找到以下影片先uninstall再重新安裝就解決了:
      th-cam.com/video/jbIQxQjlIWg/w-d-xo.html

  • @dax0789
    @dax0789 5 ปีที่แล้ว

    請問一下能否使用atom這種文字編輯器來寫網路爬蟲或資料分析? 對我來說vscode實在太笨重了

    • @cwpeng-course
      @cwpeng-course  5 ปีที่แล้ว

      可以哦,主要就是文字編輯器 + 命令介面就可以運作。
      用不同的工具,有些操作細節會不太一樣,但應該不難解決 ~

  • @Bibi-uh7dr
    @Bibi-uh7dr 3 ปีที่แล้ว

    不好意思,為什麼我打完後輸出顯示不出表格,只顯示no such file or directory

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      可能程式的檔案名稱沒有輸入正確,或者沒有先做打開專案資料夾的動作 ~

  • @石帥哥-e9t
    @石帥哥-e9t 3 ปีที่แล้ว

    不好意思我想問一下老師若知道cp值之後我想將3個人排名,要如何撰寫,想不出來,希望老師解救
    感謝老師

    • @cwpeng-course
      @cwpeng-course  3 ปีที่แล้ว

      你可以查詢看看 pandas sort_values 相關的資訊哦

  • @laulawrence
    @laulawrence ปีที่แล้ว

    data["revenue"]=[40000000, 44444444, 3333333]
    data["rank"]=pd.Series([3, 6, 1], index=["a","b","c"])
    are these two methods of doing the same thing??

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      Almost the same, but there is no customized index in first statement.

  • @陳健達-r8r
    @陳健達-r8r 2 ปีที่แล้ว

    請問為什麼有時候 data.max() 這種要帶括號 像是data.size又不用帶 有人能幫阿呆我解答嗎

    • @cwpeng-course
      @cwpeng-course  2 ปีที่แล้ว

      一個是方法 ( 函式 ),需要呼叫。另一個是屬性,不是函式,直接取用。

  • @yuezhao7146
    @yuezhao7146 ปีที่แล้ว

    老师你好,首先非常感谢你的教学,我是小白都能跟着做下来,但是遇到一个问题,data=pd.DataFrame({
    "name":["Amy", "Jone", "Bob"],
    "salary":[30000, 50000, 40000]
    }, index=["a", "b", "c"]), # 自定索引
    print(data)
    print("======================")
    # 观察资料
    print("观察数量", data.size)
    print("资料形状", data.shape)
    print("资料索引", data.index)
    这是我的code,但是在运行时显示print("观察数量", data.size)
    ^^^^^^^^^
    AttributeError: 'tuple' object has no attribute 'size' 这是什么原因呢? 感谢老师

    • @yuezhao7146
      @yuezhao7146 ปีที่แล้ว

      而且我在运行data=pd.DataFrame({
      "name":["Amy", "Jone", "Bob"],
      "salary":[30000, 50000, 40000]
      }, index=["a", "b", "c"]), # 自定索引
      print(data) 这一步骤的时候,结果显示( name salary
      a Amy 30000
      b Jone 50000
      c Bob 40000,) ,是有()的,我不知道哪里不一样

    • @cwpeng-course
      @cwpeng-course  ปีที่แล้ว

      這很可能只是細節版本的差異產生的輸出內容差異,實際的資料並沒有不同,所以可以不用太在乎這點輸出上的小落差。

  • @dawi9840
    @dawi9840 4 ปีที่แล้ว +3

    30:26 可憐的Amy ,俗又大碗.....幫QQ

  • @老高-o6u
    @老高-o6u 3 ปีที่แล้ว +1

    聽到cp值不自覺鼻酸起來XD

  • @user-yx7zz2mm2t
    @user-yx7zz2mm2t 6 หลายเดือนก่อน +1

    cp值高不是好事😂😂😂

  • @hungbomb
    @hungbomb 4 ปีที่แล้ว

    彭彭老師到底會多少東西! 好厲害

    • @cwpeng-course
      @cwpeng-course  4 ปีที่แล้ว +1

      我也是以年為單位,一直教一直學哦 :)