Python Pandas 資料分析 - 篩選資料 By 彭彭

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

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

  • @RogerAndy-z1e
    @RogerAndy-z1e ปีที่แล้ว +3

    感謝彭彭老師影片教學 受益良多,希望未來轉職成功,最近也要買會員課程開始學習Flask了!

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

      加油,祝福你成功轉職 :)

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

    最近開始學習python 謝謝老師花時間準備這個系列的影片 這系列的影片都看完了 收益良多 感謝😍

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

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

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

    謝謝老師,讓我兩週左右認識了python這個語言~只是用MAC真的滿多地方跟Windows不同,要上網爬文才知道怎樣解決,但這也算是debug過程,很有趣XD

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

      確實會有些差異,但也沒這麼嚴重,你說是吧 XDDD

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

    打通任督二脈的教學~超級讚

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

    0:14 資料解構資料解構總覽
    0:35 Series
    2:44 DataFrame
    4:15 實際操作

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

    非常感謝老師的教學,受益良多!

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

      不會哦,謝謝你的回饋和支持 :)

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

    感谢彭彭老师,真是我看过的最好的python 老师

  • @ken-gq8qq
    @ken-gq8qq 4 ปีที่แล้ว +1

    終於全部上完了,感動 謝謝老師

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

      替你高興 :) 繼續加油嘍 ~~~~

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

    已经跟随老师学习了不少的python语言,期待老师出 machine learning的视频。非常感谢老师!

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

      不客气,也谢谢你的建议 :)

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

    感謝老師上傳。在這部影片之前,爬蟲的資料都靠excel整理乾淨XD

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

      哈哈哈,很高興對你有些幫助嘍 :)

    • @晚楓岸
      @晚楓岸 3 ปีที่แล้ว +1

      @@cwpeng-course
      謝謝老師分享
      因為我是因為老師的影片開始學程式的,在這之前完全沒有概念
      感覺資料整理的影片放在爬蟲前面,在爬蟲的部分會比較好懂

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

    *資料結構總覽*
    1.單維度的資料Series
    2.雙維度的資料DataFrame
    *Series*
    《基本邏輯》
    # 建立Series資料
    import pandas as pd
    data = pd.Series(列表)
    # 建立篩選條件(與資料數量對應的布林值)
    # 我要第一和第三個資料,不要第二個
    condition = [True,False,True]
    # 根據條件完成篩選
    # 只剩1 and 3
    filteredData = data[condition]
    《常見操作》
    # 建立Series資料
    import pandas as pd
    data = pd.Series(列表)
    # 建立篩選條件(直接透過比較運算產生)
    condition = data>5
    # 根據條件完成篩選
    filteredData = data[condition]
    *DataFrame*
    《基本邏輯》
    # 建立DataFrame資料
    import pandas as pd
    data = pd.DataGrame(字典)
    # 建立篩選條件(與資料列數量對應的布林值)(橫向,列)
    condition = [True,False,True]
    # 根據條件完成篩選
    filteredData = data[condition]
    《常見操作》
    # 建立DataFrame資料
    import pandas as pd
    data = pd.DataGrame(字典)
    # 建立篩選條件(透過特定欄位的比較運算產生)
    condition = data[欄位名稱] > 5
    # 根據條件完成篩選
    filteredData = data[condition]
    # --- pandas-filter.py --
    # 載入pandas模組
    import pandas as pd
    # 篩選練習 - Series01
    data = pd.Series([30,15,20])
    condition = [True,False,True]
    filteredData = data[condition]
    print(filteredData)
    # >>> 0 30
    # >>> 2 20
    # >>> dtype: int64
    # 篩選練習 - Series02
    data = pd.Series([30,15,20])
    condition = data > 18
    print(condition)
    filteredData = data[condition]
    print(filteredData)
    # # >>> 0 True
    # # >>> 1 False
    # # >>> 2 True
    # # >>> dtype: bool
    # # >>> 0 30
    # # >>> 2 20
    data = pd.Series(["您好","Python","Pandas"])
    condition = [False,True,True]
    filteredData = data[condition]
    print(filteredData)
    # >>> 1 Python
    # >>> 2 Pandas
    data = pd.Series(["您好","Python","Pandas"])
    condition = data.str.contains("P")
    print(condition)
    filteredData = data[condition]
    print(filteredData)
    # >>> 0 False
    # >>> 1 True
    # >>> 2 True
    # >>> dtype: bool
    # >>> 1 Python
    # >>> 2 Pandas
    # >>> dtype: object
    # 篩選練習 - DataFrame-01
    data = pd.DataFrame({
    "name":["Amy","Bab","Charles"],
    "salary":[30000,50000,40000]
    })
    print(data)
    condition = [False,True,True]
    filteredData = data[condition]
    print(filteredData)
    # >>> name salary
    # >>> 0 Amy 30000
    # >>> 1 Bab 50000
    # >>> 2 Charles 40000
    # >>> name salary
    # >>> 1 Bab 50000
    # >>> 2 Charles 40000
    # 篩選練習 - DataFrame-02 實際應用
    data = pd.DataFrame({
    "name":["Amy","Bab","Charles"],
    "salary":[30000,50000,40000]
    })
    condition = data["salary"]>=40000
    print(condition)
    filteredData = data[condition]
    print(filteredData)
    # >>> 0 False
    # >>> 1 True
    # >>> 2 True
    # >>> Name: salary, dtype: bool
    # >>> name salary
    # >>> 1 Bab 50000
    # >>> 2 Charles 40000
    # 篩選練習 - DataFrame-03 變化
    data = pd.DataFrame({
    "name":["Amy","Bab","Charles"],
    "salary":[30000,50000,40000]
    })
    condition = data["name"]=="Amy"
    print(condition)
    filteredData = data[condition]
    print(filteredData)
    # >>> 0 True
    # >>> 1 False
    # >>> 2 False
    # >>> Name: name, dtype: bool
    # >>> name salary
    # >>> 0 Amy 30000

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

    哇!感謝老師分享教學,來好好研讀!

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

      哈哈哈,好哦,加油!

  • @KIngking-le5xt
    @KIngking-le5xt 4 ปีที่แล้ว +3

    感謝老師的教學!! 我想請問一下 如何一次篩選兩種以上條件呢
    例如 data["salary"]>=40000 和 data["name"]==Bob
    謝謝老師!

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

      condition = (data["salary"]>=40000) & (data["name"]=="Bob")

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

      感謝 @YENYU LIU 的回應和分享,很棒 :))))

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

      同問,本來一直嘗試改code,但都一直差一點
      感謝解答

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

    終於有新的了
    謝謝老師

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

    老师快点更新呀,想快点学习,感谢老师的教学!!!

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

    彭彭老师, 感谢你的教学, 希望你能出Numpy, Matplotlib的使用教学,期待!

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

      谢谢你的回馈和建议,我会尽量 :)

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

    看完第28集,灑花~

  • @q6625
    @q6625 4 ปีที่แล้ว +5

    請問能不能在影片名加集數
    像是01-安裝python
    這樣複習比較好找
    謝謝老師

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

      感謝你的建議,好哦,我找時間來處理看看 ~

  • @林明-j3y
    @林明-j3y 4 ปีที่แล้ว +1

    彭彭老師教得很好,下堂可不可以教一下google 的API的使用,那些憑證令人好頭痛,不知道佢的程式流程是怎樣。

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

      謝謝你的建議,我會考慮這一塊內容,雖然可能不是下一段,不好意思 @@a

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

    感谢分享 学习来写作业了

  • @詹传斌
    @詹传斌 4 ปีที่แล้ว +1

    新鲜出炉的,感谢老师分享~~

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

    謝謝彭彭老師分享

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

    感恩讚嘆再感恩再讚嘆

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

    這個也教得很棒!

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

    老師您好,想請問一下多重篩選的問題,就以範例為例,如果我想要篩選出薪水大於25000的,condition可以寫data["salary"] > 25000;若想篩選出薪水小於4500,condition可以寫成data["salary"] > 45000,但如果想知道薪水介於25000與45000之間,寫data["salary"] > 25000 and data["salary"] > 45000會發生錯誤,目前我找到的解決方案是先把兩個條件都丟進變數裡,再把兩個變數做&,這種方式是可以達到效果,但還是想知道pandas是否有方法處理多重篩選的問題這樣,感謝

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

      很棒的問題描述和細節,感覺你有花了很多時間在想辦法解決 :)
      原來的寫法可以改成 (data["salary"] > 25000) & (data["salary"] < 45000) 應該就會正常運作。
      關鍵有兩個,一個是用 () 確定運算的優先順序,另外一個就如你所說的,使用 & 符號,不要用 and 這個字。對 Series 來說,& 和 and 會是不同的運算方式,使用 and 他無法有效的對 Series 本身做邏輯運算,要使用 & 才能對 Series 裡頭的每個布林值逐一做處理。

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

      @@cwpeng-course 感謝老師的回覆,我研究理解了一下,首先,就像老師說的運算子優先順序的問題,&的優先順序是把>還要前面的,所以要加( ),再者就是and與&這兩個的用法,我試了一下
      and屬於邏輯運算子,兩邊如果是放單一布林值的話是正常的,如果要處理批次的布林值的話,我目前想到也測是可以的就是用迴圈
      a = [True, True, False, False]
      b = [False, True, False, True]
      c, d = [], []
      for i in range(len(a)):
      c = c + [a[i] and b[i]]
      d = d + [a[i] or b[i]]
      print(c)
      print(d)
      等同一個一個抓出來處理,若不一個個抓出來處理的話,and則會輸出後者的值,也就是說a and b的話,會輸出b的值,而or則會輸出a的值
      而&屬於位元運算子,拿來處理單一布林值的話,效果會跟and一樣,但要處理批次的話要放入np.array做處理
      a = np.array([True, True, False, False])
      b = np.array([False, True, False, True])
      c = 1
      d = 3
      print(True & False)
      print(True | False)
      print(a & b)
      print(a | b)
      而pandas是基於numpy的,所以我想才能直接用&處理整批的布林值

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

      @@yichenchen4633 哇,真的是很棒的學習和測試記錄分享,謝謝你 :)

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

    谢谢老师,有发必跟

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

    老師 印出布林值後,
    我發現結果,不用建立變數,直接 print(data[condition])也可以耶@@

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

      確實是可以的哦 :)

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

      因為是一樣的意思 老師只是先把它存在新的變數裡

  • @LZhe-o9s
    @LZhe-o9s 4 ปีที่แล้ว

    感謝老師~~

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

    sir, 有沒有打算出一系列的 numpy 以及 matplotlib 的教學影片呢?

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

      近期沒有呦,目前幾個月後會規劃的 Python 進階內容,會是完整的 Flask 後端伺服器開發的部份 ~

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

    請問老師是否考慮包含matplotlib繪圖功能,以便與pandas配合

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

      我會考慮看看呦,謝謝你的建議 :)

  • @曹軒宇
    @曹軒宇 2 ปีที่แล้ว

    老師為甚麼我在condition=data["salary"]>=40000這行電腦說'>='not supported between instances of 'str' and 'int'

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

      因為你的資料中 salary 的值用引號包住,就變成字串了,我們要使用數字。

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

    謝謝老師的教學,想請問老師
    第一次使用pandas模組時沒遇到甚麼問題
    第二次時只打了import pandas就出現下面這些,想請問老師該怎麼解決
    $$$
    Traceback (most recent call last):
    File "C:\Users\USER\Desktop\Python\Python-Book\pandas-using.py", line 1, in
    import pandas as pd
    File "C:\Users\USER\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\__init__.py", line 179, in
    import pandas.testing
    File "C:\Users\USER\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\testing.py", line 6, in
    from pandas._testing import (
    File "C:\Users\USER\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\_testing\__init__.py", line 58, in
    from pandas._testing._io import ( # noqa:F401
    File "C:\Users\USER\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\_testing\_io.py", line 22, in
    from pandas._testing._random import rands
    File "C:\Users\USER\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\_testing\_random.py", line 10, in
    RANDS_CHARS = np.array(list(string.ascii_letters + string.digits), dtype=(np.str_, 1))
    AttributeError: module 'string' has no attribute 'ascii_letters'

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

      確認一下資料夾中的程式檔案名稱沒有 string 這個名字,會和內建的模組衝突 ~

  • @c.h.l.4909
    @c.h.l.4909 4 ปีที่แล้ว

    老師有考慮教基本繪圖嗎?隨興試著用「turtle.forward(150)」畫看看,結果圖的視窗跳出來後秒數消失阿~~有機會的話希望能看到vs code的python繪圖操作

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

      我會考慮看看,謝謝你的建議和回饋呦 :)

  • @宇-n5l
    @宇-n5l 4 ปีที่แล้ว

    老師~請問怎麼一次在前面加#

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

    你好,想问下如果我想筛选和用的资料是false的资料,要如何写?

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

      要看你想筛选的栏位是什么哦 ~

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

    請問DataFrame 只能雙維度嗎? condition可以存在兩個以上嗎?

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

      DataFrame 只能代表雙維度的資料沒錯,condition 可以用邏輯運算 and 或 or 來結合更多條件 ~

  • @張Zhé勳
    @張Zhé勳 4 ปีที่แล้ว

    請問要怎麼用指令修改DataFrame的資料呢? 比如Salary有0 用20000代替

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

      data["salary"] 可以用 Series 的型態取得整個欄位,然後要看看你想改的資料是第幾筆,索引是什麼,就可以進一步的取得並修改。

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

    老師請問是否可以出一部影片講解stringIO?
    之前看其他人寫的爬蟲程式碼常常會用到這個,但對這個不是很理解

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

      好哦,謝謝你的建議,先讓我收起來,如果之後有排到時間我會考慮看看 ~~~~~

  • @i-fanchang348
    @i-fanchang348 4 ปีที่แล้ว

    請問有辦法將python製作成exe嗎?
    現在看到的資料都是呈現在python的製作環境。
    我們要如何將python的運作過程轉成一個exe執行。又要如何將python的結果轉換成html或是可以列印出來的格式?

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

      有一些打包工具可以幫助你做到這件事情,搜尋 pyinstaller 試試看 ~
      HTML 是網頁的部份,需要學習架設網站的相關知識,會比較困難一些哦 ~

  • @張台利
    @張台利 4 ปีที่แล้ว

    16:23 老師,那我想用名字一次搜尋兩個人以上的資料要怎麼做呢?

    • @張台利
      @張台利 4 ปีที่แล้ว

      @@wintersbreezy 3Q

    • @張台利
      @張台利 4 ปีที่แล้ว

      @@wintersbreezy 我試過了,但是他還是一次出現三個人的資料

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

      感謝 @Winter 的回應,是很不錯的解法 :)
      @張台利,最後寫個 data=data[cond] 再試試看

    • @張台利
      @張台利 4 ปีที่แล้ว

      @@cwpeng-course
      data=pd.DataFrame({
      "name":["Amy","Bob","Charlos"],
      "salary":[300000,7000000,600000]
      })
      print(data)
      cond=data['name'].isin({'Amy', 'Bob'})
      data[cond]
      data=data[cond]
      是這樣嗎?可是我還是會出現三個人的資料

    • @張台利
      @張台利 4 ปีที่แล้ว

      @@cwpeng-course 我已經弄清楚了,謝謝老師

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

    老師請問我有一個df的資料,資料範圍在2.0~0.5之間,我只想取出大於1.5跟小於1.0的資料我該怎麼做

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

      condition=data["df"]>1.5
      condition1=data["df"]

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

      感謝 @pin leo 的回應,確實如此就可以解決問題哦,讚讚 :))))

  • @VincentWu-j2t
    @VincentWu-j2t 3 ปีที่แล้ว

    想請問老師 如果執行的是C++程式 要把黃色字的python換成甚麼呢?

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

      看你電腦中的 C++ 編譯器安裝的是什麼,會有差別,常見的例如 gcc

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

      g++ main.cpp & ./a.out

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

    condition不用寫map或filter的語法真的很方便

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

    謝謝彭彭老師

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

    感謝彭彭老師