@@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的,所以我想才能直接用&處理整批的布林值
謝謝老師的教學,想請問老師 第一次使用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'
感謝彭彭老師影片教學 受益良多,希望未來轉職成功,最近也要買會員課程開始學習Flask了!
加油,祝福你成功轉職 :)
最近開始學習python 謝謝老師花時間準備這個系列的影片 這系列的影片都看完了 收益良多 感謝😍
謝謝你的回饋,很高興對你有幫助 :))
謝謝老師,讓我兩週左右認識了python這個語言~只是用MAC真的滿多地方跟Windows不同,要上網爬文才知道怎樣解決,但這也算是debug過程,很有趣XD
確實會有些差異,但也沒這麼嚴重,你說是吧 XDDD
打通任督二脈的教學~超級讚
讚讚讚!
0:14 資料解構資料解構總覽
0:35 Series
2:44 DataFrame
4:15 實際操作
感謝整理 :)
非常感謝老師的教學,受益良多!
不會哦,謝謝你的回饋和支持 :)
感谢彭彭老师,真是我看过的最好的python 老师
謝謝 :)))
終於全部上完了,感動 謝謝老師
替你高興 :) 繼續加油嘍 ~~~~
已经跟随老师学习了不少的python语言,期待老师出 machine learning的视频。非常感谢老师!
不客气,也谢谢你的建议 :)
感謝老師上傳。在這部影片之前,爬蟲的資料都靠excel整理乾淨XD
哈哈哈,很高興對你有些幫助嘍 :)
@@cwpeng-course
謝謝老師分享
因為我是因為老師的影片開始學程式的,在這之前完全沒有概念
感覺資料整理的影片放在爬蟲前面,在爬蟲的部分會比較好懂
*資料結構總覽*
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
感謝紀錄 :))
哇!感謝老師分享教學,來好好研讀!
哈哈哈,好哦,加油!
感謝老師的教學!! 我想請問一下 如何一次篩選兩種以上條件呢
例如 data["salary"]>=40000 和 data["name"]==Bob
謝謝老師!
condition = (data["salary"]>=40000) & (data["name"]=="Bob")
感謝 @YENYU LIU 的回應和分享,很棒 :))))
同問,本來一直嘗試改code,但都一直差一點
感謝解答
終於有新的了
謝謝老師
不會 :)
老师快点更新呀,想快点学习,感谢老师的教学!!!
我尽量 QQ
彭彭老师, 感谢你的教学, 希望你能出Numpy, Matplotlib的使用教学,期待!
谢谢你的回馈和建议,我会尽量 :)
看完第28集,灑花~
讚讚 ~
請問能不能在影片名加集數
像是01-安裝python
這樣複習比較好找
謝謝老師
感謝你的建議,好哦,我找時間來處理看看 ~
彭彭老師教得很好,下堂可不可以教一下google 的API的使用,那些憑證令人好頭痛,不知道佢的程式流程是怎樣。
謝謝你的建議,我會考慮這一塊內容,雖然可能不是下一段,不好意思 @@a
感谢分享 学习来写作业了
:)
新鲜出炉的,感谢老师分享~~
Go Go Go ~~
謝謝彭彭老師分享
謝謝你的回饋 :)
感恩讚嘆再感恩再讚嘆
XDDDDD
這個也教得很棒!
謝謝!
老師您好,想請問一下多重篩選的問題,就以範例為例,如果我想要篩選出薪水大於25000的,condition可以寫data["salary"] > 25000;若想篩選出薪水小於4500,condition可以寫成data["salary"] > 45000,但如果想知道薪水介於25000與45000之間,寫data["salary"] > 25000 and data["salary"] > 45000會發生錯誤,目前我找到的解決方案是先把兩個條件都丟進變數裡,再把兩個變數做&,這種方式是可以達到效果,但還是想知道pandas是否有方法處理多重篩選的問題這樣,感謝
很棒的問題描述和細節,感覺你有花了很多時間在想辦法解決 :)
原來的寫法可以改成 (data["salary"] > 25000) & (data["salary"] < 45000) 應該就會正常運作。
關鍵有兩個,一個是用 () 確定運算的優先順序,另外一個就如你所說的,使用 & 符號,不要用 and 這個字。對 Series 來說,& 和 and 會是不同的運算方式,使用 and 他無法有效的對 Series 本身做邏輯運算,要使用 & 才能對 Series 裡頭的每個布林值逐一做處理。
@@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的,所以我想才能直接用&處理整批的布林值
@@yichenchen4633 哇,真的是很棒的學習和測試記錄分享,謝謝你 :)
谢谢老师,有发必跟
谢谢你 :)
老師 印出布林值後,
我發現結果,不用建立變數,直接 print(data[condition])也可以耶@@
確實是可以的哦 :)
因為是一樣的意思 老師只是先把它存在新的變數裡
感謝老師~~
:)))
sir, 有沒有打算出一系列的 numpy 以及 matplotlib 的教學影片呢?
近期沒有呦,目前幾個月後會規劃的 Python 進階內容,會是完整的 Flask 後端伺服器開發的部份 ~
請問老師是否考慮包含matplotlib繪圖功能,以便與pandas配合
我會考慮看看呦,謝謝你的建議 :)
老師為甚麼我在condition=data["salary"]>=40000這行電腦說'>='not supported between instances of 'str' and 'int'
因為你的資料中 salary 的值用引號包住,就變成字串了,我們要使用數字。
謝謝老師的教學,想請問老師
第一次使用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'
確認一下資料夾中的程式檔案名稱沒有 string 這個名字,會和內建的模組衝突 ~
老師有考慮教基本繪圖嗎?隨興試著用「turtle.forward(150)」畫看看,結果圖的視窗跳出來後秒數消失阿~~有機會的話希望能看到vs code的python繪圖操作
我會考慮看看,謝謝你的建議和回饋呦 :)
老師~請問怎麼一次在前面加#
選取後按 ctrl+/
你好,想问下如果我想筛选和用的资料是false的资料,要如何写?
要看你想筛选的栏位是什么哦 ~
請問DataFrame 只能雙維度嗎? condition可以存在兩個以上嗎?
DataFrame 只能代表雙維度的資料沒錯,condition 可以用邏輯運算 and 或 or 來結合更多條件 ~
請問要怎麼用指令修改DataFrame的資料呢? 比如Salary有0 用20000代替
data["salary"] 可以用 Series 的型態取得整個欄位,然後要看看你想改的資料是第幾筆,索引是什麼,就可以進一步的取得並修改。
老師請問是否可以出一部影片講解stringIO?
之前看其他人寫的爬蟲程式碼常常會用到這個,但對這個不是很理解
好哦,謝謝你的建議,先讓我收起來,如果之後有排到時間我會考慮看看 ~~~~~
請問有辦法將python製作成exe嗎?
現在看到的資料都是呈現在python的製作環境。
我們要如何將python的運作過程轉成一個exe執行。又要如何將python的結果轉換成html或是可以列印出來的格式?
有一些打包工具可以幫助你做到這件事情,搜尋 pyinstaller 試試看 ~
HTML 是網頁的部份,需要學習架設網站的相關知識,會比較困難一些哦 ~
16:23 老師,那我想用名字一次搜尋兩個人以上的資料要怎麼做呢?
@@wintersbreezy 3Q
@@wintersbreezy 我試過了,但是他還是一次出現三個人的資料
感謝 @Winter 的回應,是很不錯的解法 :)
@張台利,最後寫個 data=data[cond] 再試試看
@@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]
是這樣嗎?可是我還是會出現三個人的資料
@@cwpeng-course 我已經弄清楚了,謝謝老師
老師請問我有一個df的資料,資料範圍在2.0~0.5之間,我只想取出大於1.5跟小於1.0的資料我該怎麼做
condition=data["df"]>1.5
condition1=data["df"]
感謝 @pin leo 的回應,確實如此就可以解決問題哦,讚讚 :))))
想請問老師 如果執行的是C++程式 要把黃色字的python換成甚麼呢?
看你電腦中的 C++ 編譯器安裝的是什麼,會有差別,常見的例如 gcc
g++ main.cpp & ./a.out
condition不用寫map或filter的語法真的很方便
哈哈哈,對呀 :)
謝謝彭彭老師
不會呦 ~~~~~
感謝彭彭老師
不客氣呦 ~~~~~