ขนาดวิดีโอ: 1280 X 720853 X 480640 X 360
แสดงแผงควบคุมโปรแกรมเล่น
เล่นอัตโนมัติ
เล่นใหม่
講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)
XDXD
花了一週把整個系列看過一次,把許多之前看文字不懂的地方釐清了!太感謝老師了!希望之後還有更多python的影片
很高興對你有幫助 :) 會哦,Python 會持續更新的 ~
老師您也講得太好了吧!每一部分都講得十分詳細馬上就懂到底什麼東西怎麼用、叫什麼感謝老師!
謝謝你的回饋,很高興對你有幫助哦:)
老師的影片真的很受用,連沒接觸過的都能夠理解!!看到最後也不會太難~
謝謝,也很高興對你有幫助 :)
三天时间看完了,讲的通俗易懂。希望老师能够推出更多的更深入的 python 教程,比如引入更多的模块使用,正则技巧等等
谢谢,好哦,感谢你的建议 :)
《雙維度的資料》就像是一個表格,有欄和列的概念《建立DataFrame》# 載入Pandas模組import pandas as pd# 以字典資料為底,建立DataFramepd.DataFrame(字典)*資料索引*《資料的獨立編號》試算表excel最左邊的編號《內建索引》# 載入Pandas模組import pandas as pd# 以字典資料為底,建立DataFramepd.DataFrame(字典)《自訂索引》# 載入Pandas模組import pandas as pd# 以字典資料為底,建立DataFramepd.DataFrame(字典,index=索引列表)*觀察資料*《資料數量》import pandas as pddata = pd.DataFrame(字典)print(data.size) # 印出size屬性《資料形狀》import pandas as pddata = pd.DataFrame(字典)print(data.shape) # 印出shape屬性《資料索引》import pandas as pddata = pd.DataFrame(字典,index=索引列表)print(data.index) # 印出index屬性*取得「列」資料*《整列的資料》列Row在試算表中橫向的資料《依據順序取一整列》import pandas as pddata = pd.DataFrame(字典,index=索引列表) # 取得一整列data.iloc[順序]print(data[1]) # Series型態*取得「列」資料*《整欄的資料》欄column在試算表中橫向的資料《依據名稱取一整欄》import pandas as pddata = pd.Series(字典)# 取得一整列data[欄位名稱]print(data[欄位名稱]) # Series型態*建立新的欄位*《建立新的欄位》import pandas as pddata = 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 40000print("====================")# 觀察資料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: objectsalaries = 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 40000data["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
感謝紀錄 :)
5天时间看完了,讲的通俗易懂。感觉还是没有用武之地。希望老师能够推出更多的更深入的 python 教程,特别是实用性讲学。
谢谢你的回馈和建议哦,我会考虑进去的 ~~
新年快樂 彭彭老師,目前已經看完全部課程,很感謝老師的細心教學,期待老師下一堂的課程^^
很棒哦,希望對你有幫助 :)
感謝彭彭老師無私分享,這邊分享遇到的問題,若有錯還請老師指正。有遇到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")
"salary":["30000","50000","40000"]打錯了 "salary":[30000,50000,40000] 多了冒號便字串
很棒的細節訊息 ~~~~~也感謝 @好姓名 的回應,確實要注意資料型態的問題沒錯哦 ~
新年快樂~~!!等好久了!!終於更新了~~老師的教學幫助很大~
新年快樂 ~~!!~~
多谢🙏!考前再过一遍语法,太清晰了
谢谢你的回馈,感觉很棒 :)
謝謝彭彭老師,看完了,獲益良多。
讚讚,很高興對你有幫助 ~~~~~~
老師新年快樂!謝謝您的教學~
不客氣,新年快樂 :)
每天下班吃完晚餐後第一件事就是來學新知識 興奮不已
哈哈哈哈,這樣感覺很棒 :)
感恩老师!谢谢您的精心教学!
不会,也谢谢你的回馈呦 :)
新年快樂,感謝老師的教學,收穫良多
新年快樂 :)
請問彭彭老師建立dataframe時,若要特地給index,index要給的是int還是str?您影片例子是用 index=["a", "b", "c"]a: 若用index=["0", "1", "2"] -> 給stringb: 還是用index=[0, 1, 2] -> 給int若把整個dataframe印出來,看到index那一個column都是長一樣的例如以下最左邊那一個column name salary rank0 amy 3000 31 bob 5000 12 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 ?謝謝
讲的也太清楚了,太感谢了❤
❤❤❤
撐到最後一個影片只有2000 人,是第一個影片的10分之1 XDDDDD
能夠全部看完做完真的不容易壓 :)
請問彭彭老師13:37,建立dataframe時,特地給index的好處在哪裡?一般在分析excel/csv檔案時,用pandas讀進來變成一個dataframe時,會友需要特地去修改index嗎?修改之後,對於往後的應用上有什麼方便之處?謝謝
老師,你太好了,在家跟著你學python
加油加油 :))))
厉害,支持,过几天再看,这几天在看API :)
谢谢呦 :)
老师,您好,我看完了您讲的Python基础教程,我觉得讲得非常的仔细,请问您后期还会更新Python教程吗?
谢谢你的回馈,会哦,我都会慢慢地更新教学内容 :)
清楚明瞭,感謝!
不會,謝謝你的回饋 :)
您好 想請教一個疑惑 看影片到一半就有這個疑惑好奇之下實際試試看在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會變成Nandata = name salary rank new_cloumn0 amy 3000 3 NaN1 bob 5000 1 NaN2 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還是會變成Nandata = name salary rank new_cloumn0 amy 3000 3 NaN1 bob 5000 1 NaN2 chris 4000 2 NaN請問彭彭老師我該如何理解?謝謝您
老師你好, 可否做一集是講解 groupby 及 aggregate, 謝謝
感謝你的建議,我會安排看看的 :))
謝謝彭彭老師教學。請問新增一列應如何做到呢?例如已有a,b,c列,想新增d列 peter 50000 60000 5 ....
只解了一半XDDDD 變成1234了XDDDDD老師,請問要怎麼維持abc?import pandas as pddata = 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)
感謝 @YYL 的回應 :)可以把倒數第三行程式稍做修改,就能適當的管理資料的索引,如下:data=data.append(pd.DataFrame({"name":["Peter"], "salary":[50000]}, index=["d"]))
@@cwpeng-course 老師不好意思,我在新增欄位rank後 使用您上述的語法 想要新增第四列,但是沒有成功,窗口顯示 'DataFrame' object has no attribute 'append' 我上網查了方法 但還是沒有解決 ~想請問老師 問題是出在哪裡
@@涂馨云 我的程式碼與彭彭老師一樣的話會出現以下錯誤:AttributeError: 'DataFrame' object has no attribute 'append'. Did you mean: '_append'?所以就依照Python給的指示改成:data=data._append(pd.DataFrame({"name":["Peter"], "salary":[50000]}, index=["d"]))這樣就可以成功了喔
讲的非常好。
谢谢 ~
@@cwpeng-course 和大陆相比,你的收费那么低。为为什么不考虑在大陆开讲?再说,现在就业这么烂,机会比台湾多啊
請問彭彭老師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先進行轉置矩陣?謝謝
data.loc["d"]=["Key",60000]嘗試了一下.這樣可以建立新的列在最後一列之後想知道這種情況下有沒有辦法用Series的型態代替列表["Key",60000](我照著建立欄的時候的寫法寫出現ERROR)
沒辦法哦,因為 loc 是對應到列 row 的概念,而一個 row 中可能會包含多種型態的資料,這個在本質上和 Series 不合,每個 Series 都是記錄一種型態的資料而已,所以通常用來代表同一個欄位的所有資料。
彭彭老师的讲解非常棒! 清晰顺畅容易操作。 我有一个问题,在操作 data["cp"]=data["revenue"]/data["salary"] 时,返回的type error:unsupported operated types for /: 'str' and 'str'老师可以解释一下吗?谢谢!
代表你的 data 中的欄位資料是字串的形式,創建資料的時候不要在數字外面加上引號,不然就會變成字串,無法做除法。
太開心了 我原本一直找不到自己問題到底在哪,每次看到留言區都能找我自己的錯誤哈哈 太感謝了
@@涂馨云 真的,大家的疑問點都類似
想請問彭彭老師,在之後有打算教學django的部分嗎?
短時間內不會呦,網站伺服器的部份我這邊選擇了 Flask 來做教學 ~
iloc gets rows (and/or columns) at integer locations.
感謝英文說明 :)))
老師請問一下,如果我想要增加一個D列. 是算 sarary revenue的平均 我該怎麼加。目前能做到用.mean()算出平均 然後用,appen的方式加入到下一列,但是不知道要怎麼樣在那一列的0的位置 標示出"mean"這個字,謝謝
通常我們不會把 mean() 這種計算後的統計量,放到原始資料的 DataFrame 的後面 ( 類似 Excel 的想像 ),這在資料設計上其實不太順,未來資料有更動的時候該怎麼辦?自然找不到適合的做法,反而是需要的時候計算出來,存放到其他的結構、檔案或直接輸出。
大陆这边对于表格横向的部分称作行,纵向的部分称作列,列的概念和彭彭老师讲的正好相反,听的晕晕乎乎的XD
XDDDDDDD 希望还勉强过得去 ~~~
期待進階的python教學
好的,我在規劃中,希望今年中之後可以有些著落 ~
老师我在跑 data["cp"]=data["revenue"]/data["salary"] 的时候出现TypeError: unsupported operand type(s) for /: 'int' and 'str'请问要怎样解决?谢谢
因为你的资料里面的 revenue 或 salary 是储存成字串的形式,所以无法做除法哦 ~
彭彭老師:請問要如將excel的資料讀入python,再進行資料分析??是否有這方面的課程網站可以參閱,謝謝!!
可以簡單的試試看:import pandas as pddf=pd.read_excel("檔案路徑")print(df)
@@cwpeng-course 還能匯入excel!!
想請問老師,影片最後得到了cp值的資訊,那若想用max()的方法找到cp=16.666再輸出該列的"name",也就是"Amy"的話該怎麼做呢,謝謝老師
idxmax() 可以傳回索引值idx=data["cp"].idxmax()print(data.loc[idx]["name"])
感謝 @Kiera Tsai 的說明,非常清楚 :)
29:16 慣老闆的啟蒙課程XD
XDDDDD
讲的很好。不过有点疑惑,我从小学的是横成行,竖成列,竖列也可以叫栏。难道台湾是横成列?
對唷我們是教直行橫列XD
是哦,这确实有些落差 ~
老師新年快樂~~另外請問要怎麼用pandas讀取及合併多個csv檔案呀?
感謝 @Winter 的回應,很棒的分享 :)
老師您好,想請問一下建立新的欄位這邊,如果資料列數有3列,但我只有2列的新資料,只寫2列的話會產生錯誤,這部分要如何處理呢?有方法讓它自動補0或者是Nan之類的嗎?感謝
我查了一下想看有沒有簡單的作法,但好像沒找到,所以就直接寫點邏輯來處理,主要概念就是先把資料補滿到現有的數量,之後再塞進去。你可以專注在以下範例的 newColumn 的處理部份:import pandas as pddata=pd.DataFrame({ "name":["Bob", "Alice", "John"], "age":[30, 20, 15]})# 資料少了一些newColumn=[3000, 2000]rows=data.shape[0] # 取得原來資料的 rows 數量,目前是 3while len(newColumn)
@@cwpeng-course 感謝老師的回覆,參考了您的程式後,感覺好像一開始新欄位先給全0矩陣後,再把想放的值放入就不用想補0的問題了,感謝老師
加入會員,重新看一下
希望對你有幫助哦!
使用預設的索引出現這個資料索引 RangeIndex(start=0, stop=3, step=1)想問一下stop=3, step=1 是什麼意思呢?
從編號 0 開始建立到編號 3 結束,每次往前數 1 個整數。
新增欄位那裡revenue新增沒附上index,印出會按順序,也沒問題但新增rank,後面沒附上index=["a","b","c"],照樣印的出來,可是不是印3,6,1,是三個NaN好怪~~ 我以為也會照默認的順序印出
謝謝分享,至於奇怪的部份,可能要看看實際的程式才能進一步判斷了 XD
實測發現如果新增欄位的時候使用一般 data[新欄位的名稱]=列表 語法的話,會按照默認順序填入,但如果使用Series較嚴謹的寫法,不加index就會出現NaN
老師您好,想知道如果像是使用Series查詢出max後,要怎麼知道他對應的索引呢?即要如何使用value反查key值呢??🥺️🥺️ 感謝老師
有個簡單的做法如下:series[欄位名稱==值].index[0]
交的很好 謝啦
謝謝回饋 :)
謝謝你
不會呦 :)
老師您好, 請問要如何將以下類型的文字檔轉為 DataFrameaaa test1bbb test2ccc test3
你可以參考後面的影片,使用 pd.read_csv(檔案名稱路徑, sep=" ")其中 sep 的參數要指定你的 aaa 和 test1 中的區隔符號,看是空白或是 tab 符號。
請問有辦法根據姓名來找出對應的薪水資料嗎?而非透過index
後面的教學有提到資料篩選相關的操作,就可以根據特定的欄位來搜尋到想要的資料哦 ~
老師:如果我rank 想用cp 的值 來排名次,該如何輸入
得看看錯誤訊息和程式碼,才有辦法幫得上忙哦
彭彭老師好我是用jupyter notebook撰寫程式,我目前遇到的問題是項目列name,salary,revenue,都改成中文姓名欄也改成中文這樣就導致列不會對齊了,是哪裡出了問題
這其實沒有太大問題,在終端機的輸出本來就沒有辦法保證對齊,我們比較在意的是他實際的結構是否正確,而不是畫面的呈現。
请问老师 pandas有针对EXCEL教学吗?
目前没有哦,我会考虑看看,谢谢你的建议 :)
你好,请问如果cp值要取整数的话,需要怎么操作
整数除法可以使用两条斜线 // 取代 /
pandas很像無法寫成函式做字串搜尋,很像會型不一樣錯誤?
可以的,只是要配合它的特性來做處理,這就要看實際的程式細節了 ~
努力中
加油 ~~~
請教彭彭老師,我照你的打但試了幾次之後都出現以下訊息,請問是什麼原因呢? 謝謝!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: 存取被拒。
通常是你的電腦中有安裝其他 Python 相關的套件管理工具,例如 Anaconda 之類的東西,如果已經用不到了,建議移除後試試看。
@@cwpeng-course 謝謝老師回覆, 其實我不太了解什麼是套件管理工具 (資質駑鈍), 我的python版本是3.8.3 (32bit) 爬了很多文以後, 發現用window安裝pandas或numpy似乎滿容易會有這個問題, 後來找到以下影片先uninstall再重新安裝就解決了:th-cam.com/video/jbIQxQjlIWg/w-d-xo.html
請問一下能否使用atom這種文字編輯器來寫網路爬蟲或資料分析? 對我來說vscode實在太笨重了
可以哦,主要就是文字編輯器 + 命令介面就可以運作。用不同的工具,有些操作細節會不太一樣,但應該不難解決 ~
不好意思,為什麼我打完後輸出顯示不出表格,只顯示no such file or directory
可能程式的檔案名稱沒有輸入正確,或者沒有先做打開專案資料夾的動作 ~
不好意思我想問一下老師若知道cp值之後我想將3個人排名,要如何撰寫,想不出來,希望老師解救感謝老師
你可以查詢看看 pandas sort_values 相關的資訊哦
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??
Almost the same, but there is no customized index in first statement.
請問為什麼有時候 data.max() 這種要帶括號 像是data.size又不用帶 有人能幫阿呆我解答嗎
一個是方法 ( 函式 ),需要呼叫。另一個是屬性,不是函式,直接取用。
老师你好,首先非常感谢你的教学,我是小白都能跟着做下来,但是遇到一个问题,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' 这是什么原因呢? 感谢老师
而且我在运行data=pd.DataFrame({ "name":["Amy", "Jone", "Bob"], "salary":[30000, 50000, 40000]}, index=["a", "b", "c"]), # 自定索引print(data) 这一步骤的时候,结果显示( name salarya Amy 30000b Jone 50000c Bob 40000,) ,是有()的,我不知道哪里不一样
這很可能只是細節版本的差異產生的輸出內容差異,實際的資料並沒有不同,所以可以不用太在乎這點輸出上的小落差。
30:26 可憐的Amy ,俗又大碗.....幫QQ
哈哈哈哈 ~~~~
聽到cp值不自覺鼻酸起來XD
XDDDDDDDD
cp值高不是好事😂😂😂
😂😂😂
彭彭老師到底會多少東西! 好厲害
我也是以年為單位,一直教一直學哦 :)
講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)
XDXD
花了一週把整個系列看過一次,把許多之前看文字不懂的地方釐清了!太感謝老師了!希望之後還有更多python的影片
很高興對你有幫助 :) 會哦,Python 會持續更新的 ~
老師您也講得太好了吧!
每一部分都講得十分詳細
馬上就懂到底什麼東西怎麼用、叫什麼
感謝老師!
謝謝你的回饋,很高興對你有幫助哦:)
老師的影片真的很受用,連沒接觸過的都能夠理解!!看到最後也不會太難~
謝謝,也很高興對你有幫助 :)
三天时间看完了,讲的通俗易懂。
希望老师能够推出更多的更深入的 python 教程,比如引入更多的模块使用,正则技巧等等
谢谢,好哦,感谢你的建议 :)
《雙維度的資料》就像是一個表格,有欄和列的概念
《建立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
感謝紀錄 :)
5天时间看完了,讲的通俗易懂。
感觉还是没有用武之地。
希望老师能够推出更多的更深入的 python 教程,特别是实用性讲学。
谢谢你的回馈和建议哦,我会考虑进去的 ~~
新年快樂 彭彭老師,目前已經看完全部課程,很感謝老師的細心教學,期待老師下一堂的課程^^
很棒哦,希望對你有幫助 :)
感謝彭彭老師無私分享,這邊分享遇到的問題,若有錯還請老師指正。有遇到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")
"salary":["30000","50000","40000"]
打錯了 "salary":[30000,50000,40000] 多了冒號便字串
很棒的細節訊息 ~~~~~
也感謝 @好姓名 的回應,確實要注意資料型態的問題沒錯哦 ~
新年快樂~~!!等好久了!!終於更新了~~老師的教學幫助很大~
新年快樂 ~~!!~~
多谢🙏!考前再过一遍语法,太清晰了
谢谢你的回馈,感觉很棒 :)
謝謝彭彭老師,看完了,獲益良多。
讚讚,很高興對你有幫助 ~~~~~~
老師新年快樂!謝謝您的教學~
不客氣,新年快樂 :)
每天下班吃完晚餐後第一件事就是來學新知識 興奮不已
哈哈哈哈,這樣感覺很棒 :)
感恩老师!谢谢您的精心教学!
不会,也谢谢你的回馈呦 :)
新年快樂,感謝老師的教學,收穫良多
新年快樂 :)
請問彭彭老師
建立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 ?
謝謝
讲的也太清楚了,太感谢了❤
❤❤❤
撐到最後一個影片只有2000 人,是第一個影片的10分之1 XDDDDD
能夠全部看完做完真的不容易壓 :)
請問彭彭老師
13:37,建立dataframe時,特地給index的好處在哪裡?
一般在分析excel/csv檔案時,用pandas讀進來變成一個dataframe時,會友需要特地去修改index嗎?
修改之後,對於往後的應用上有什麼方便之處?
謝謝
老師,你太好了,在家跟著你學python
加油加油 :))))
厉害,支持,过几天再看,这几天在看API :)
谢谢呦 :)
老师,您好,我看完了您讲的Python基础教程,我觉得讲得非常的仔细,请问您后期还会更新Python教程吗?
谢谢你的回馈,会哦,我都会慢慢地更新教学内容 :)
清楚明瞭,感謝!
不會,謝謝你的回饋 :)
您好
想請教一個疑惑
看影片到一半就有這個疑惑
好奇之下實際試試看
在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
請問彭彭老師我該如何理解?
謝謝您
老師你好, 可否做一集是講解 groupby 及 aggregate, 謝謝
感謝你的建議,我會安排看看的 :))
謝謝彭彭老師教學。
請問新增一列應如何做到呢?例如已有a,b,c列,想新增d列 peter 50000 60000 5 ....
只解了一半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)
感謝 @YYL 的回應 :)
可以把倒數第三行程式稍做修改,就能適當的管理資料的索引,如下:
data=data.append(pd.DataFrame({"name":["Peter"], "salary":[50000]}, index=["d"]))
@@cwpeng-course 老師不好意思,我在新增欄位rank後 使用您上述的語法 想要新增第四列,但是沒有成功,窗口顯示 'DataFrame' object has no attribute 'append'
我上網查了方法 但還是沒有解決 ~想請問老師 問題是出在哪裡
@@涂馨云 我的程式碼與彭彭老師一樣的話會出現以下錯誤:
AttributeError: 'DataFrame' object has no attribute 'append'. Did you mean: '_append'?
所以就依照Python給的指示改成:
data=data._append(pd.DataFrame({"name":["Peter"], "salary":[50000]}, index=["d"]))
這樣就可以成功了喔
讲的非常好。
谢谢 ~
@@cwpeng-course 和大陆相比,你的收费那么低。为为什么不考虑在大陆开讲?再说,现在就业这么烂,机会比台湾多啊
請問彭彭老師
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先進行轉置矩陣?
謝謝
data.loc["d"]=["Key",60000]
嘗試了一下.這樣可以建立新的列在最後一列之後
想知道這種情況下有沒有辦法用Series的型態代替列表["Key",60000]
(我照著建立欄的時候的寫法寫出現ERROR)
沒辦法哦,因為 loc 是對應到列 row 的概念,而一個 row 中可能會包含多種型態的資料,這個在本質上和 Series 不合,每個 Series 都是記錄一種型態的資料而已,所以通常用來代表同一個欄位的所有資料。
彭彭老师的讲解非常棒! 清晰顺畅容易操作。 我有一个问题,
在操作 data["cp"]=data["revenue"]/data["salary"] 时,返回的type error:unsupported operated types for /: 'str' and 'str'
老师可以解释一下吗?谢谢!
代表你的 data 中的欄位資料是字串的形式,創建資料的時候不要在數字外面加上引號,不然就會變成字串,無法做除法。
太開心了 我原本一直找不到自己問題到底在哪,每次看到留言區都能找我自己的錯誤哈哈 太感謝了
@@涂馨云 真的,大家的疑問點都類似
想請問彭彭老師,在之後有打算教學django的部分嗎?
短時間內不會呦,網站伺服器的部份我這邊選擇了 Flask 來做教學 ~
iloc gets rows (and/or columns) at integer locations.
感謝英文說明 :)))
老師請問一下,如果我想要增加一個D列. 是算 sarary revenue的平均 我該怎麼加。目前能做到用.mean()算出平均 然後用,appen的方式加入到下一列,但是不知道要怎麼樣在那一列的0的位置 標示出"mean"這個字,謝謝
通常我們不會把 mean() 這種計算後的統計量,放到原始資料的 DataFrame 的後面 ( 類似 Excel 的想像 ),這在資料設計上其實不太順,未來資料有更動的時候該怎麼辦?自然找不到適合的做法,反而是需要的時候計算出來,存放到其他的結構、檔案或直接輸出。
大陆这边对于表格横向的部分称作行,纵向的部分称作列,列的概念和彭彭老师讲的正好相反,听的晕晕乎乎的XD
XDDDDDDD 希望还勉强过得去 ~~~
期待進階的python教學
好的,我在規劃中,希望今年中之後可以有些著落 ~
老师我在跑 data["cp"]=data["revenue"]/data["salary"] 的时候出现
TypeError: unsupported operand type(s) for /: 'int' and 'str'
请问要怎样解决?谢谢
因为你的资料里面的 revenue 或 salary 是储存成字串的形式,所以无法做除法哦 ~
彭彭老師:請問要如將excel的資料讀入python,再進行資料分析??是否有這方面的課程網站可以參閱,謝謝!!
可以簡單的試試看:
import pandas as pd
df=pd.read_excel("檔案路徑")
print(df)
@@cwpeng-course 還能匯入excel!!
想請問老師,影片最後得到了cp值的資訊,那若想用max()的方法找到cp=16.666再輸出該列的"name",也就是"Amy"的話該怎麼做呢,謝謝老師
idxmax() 可以傳回索引值
idx=data["cp"].idxmax()
print(data.loc[idx]["name"])
感謝 @Kiera Tsai 的說明,非常清楚 :)
29:16 慣老闆的啟蒙課程XD
XDDDDD
讲的很好。不过有点疑惑,我从小学的是横成行,竖成列,竖列也可以叫栏。
难道台湾是横成列?
對唷我們是教直行橫列XD
是哦,这确实有些落差 ~
老師新年快樂~~另外請問要怎麼用pandas讀取及合併多個csv檔案呀?
感謝 @Winter 的回應,很棒的分享 :)
老師您好,想請問一下建立新的欄位這邊,如果資料列數有3列,但我只有2列的新資料,只寫2列的話會產生錯誤,這部分要如何處理呢?有方法讓它自動補0或者是Nan之類的嗎?感謝
我查了一下想看有沒有簡單的作法,但好像沒找到,所以就直接寫點邏輯來處理,主要概念就是先把資料補滿到現有的數量,之後再塞進去。你可以專注在以下範例的 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)
@@cwpeng-course 感謝老師的回覆,參考了您的程式後,感覺好像一開始新欄位先給全0矩陣後,再把想放的值放入就不用想補0的問題了,感謝老師
加入會員,重新看一下
希望對你有幫助哦!
使用預設的索引出現這個
資料索引 RangeIndex(start=0, stop=3, step=1)
想問一下stop=3, step=1 是什麼意思呢?
從編號 0 開始建立到編號 3 結束,每次往前數 1 個整數。
新增欄位那裡revenue新增沒附上index,印出會按順序,也沒問題
但新增rank,後面沒附上index=["a","b","c"],照樣印的出來,可是不是印3,6,1,是三個NaN
好怪~~ 我以為也會照默認的順序印出
謝謝分享,至於奇怪的部份,可能要看看實際的程式才能進一步判斷了 XD
實測發現如果新增欄位的時候使用一般 data[新欄位的名稱]=列表 語法的話,會按照默認順序填入,但如果使用Series較嚴謹的寫法,不加index就會出現NaN
老師您好,想知道如果像是使用Series查詢出max後,要怎麼知道他對應的索引呢?即要如何使用value反查key值呢??🥺️🥺️ 感謝老師
有個簡單的做法如下:
series[欄位名稱==值].index[0]
交的很好 謝啦
謝謝回饋 :)
謝謝你
不會呦 :)
老師您好, 請問要如何將以下類型的文字檔轉為 DataFrame
aaa test1
bbb test2
ccc test3
你可以參考後面的影片,使用 pd.read_csv(檔案名稱路徑, sep=" ")
其中 sep 的參數要指定你的 aaa 和 test1 中的區隔符號,看是空白或是 tab 符號。
請問有辦法根據姓名來找出對應的薪水資料嗎?而非透過index
後面的教學有提到資料篩選相關的操作,就可以根據特定的欄位來搜尋到想要的資料哦 ~
老師:如果我rank 想用cp 的值 來排名次,該如何輸入
得看看錯誤訊息和程式碼,才有辦法幫得上忙哦
彭彭老師好
我是用jupyter notebook撰寫程式,我目前遇到的問題是
項目列name,salary,revenue,都改成中文
姓名欄也改成中文
這樣就導致列不會對齊了,是哪裡出了問題
這其實沒有太大問題,在終端機的輸出本來就沒有辦法保證對齊,我們比較在意的是他實際的結構是否正確,而不是畫面的呈現。
请问老师 pandas有针对EXCEL教学吗?
目前没有哦,我会考虑看看,谢谢你的建议 :)
你好,请问如果cp值要取整数的话,需要怎么操作
整数除法可以使用两条斜线 // 取代 /
pandas很像無法寫成函式做字串搜尋,很像會型不一樣錯誤?
可以的,只是要配合它的特性來做處理,這就要看實際的程式細節了 ~
努力中
加油 ~~~
請教彭彭老師,我照你的打但試了幾次之後都出現以下訊息,請問是什麼原因呢? 謝謝!
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: 存取被拒。
通常是你的電腦中有安裝其他 Python 相關的套件管理工具,例如 Anaconda 之類的東西,如果已經用不到了,建議移除後試試看。
@@cwpeng-course 謝謝老師回覆, 其實我不太了解什麼是套件管理工具 (資質駑鈍), 我的python版本是3.8.3 (32bit) 爬了很多文以後, 發現用window安裝pandas或numpy似乎滿容易會有這個問題, 後來找到以下影片先uninstall再重新安裝就解決了:
th-cam.com/video/jbIQxQjlIWg/w-d-xo.html
請問一下能否使用atom這種文字編輯器來寫網路爬蟲或資料分析? 對我來說vscode實在太笨重了
可以哦,主要就是文字編輯器 + 命令介面就可以運作。
用不同的工具,有些操作細節會不太一樣,但應該不難解決 ~
不好意思,為什麼我打完後輸出顯示不出表格,只顯示no such file or directory
可能程式的檔案名稱沒有輸入正確,或者沒有先做打開專案資料夾的動作 ~
不好意思我想問一下老師若知道cp值之後我想將3個人排名,要如何撰寫,想不出來,希望老師解救
感謝老師
你可以查詢看看 pandas sort_values 相關的資訊哦
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??
Almost the same, but there is no customized index in first statement.
請問為什麼有時候 data.max() 這種要帶括號 像是data.size又不用帶 有人能幫阿呆我解答嗎
一個是方法 ( 函式 ),需要呼叫。另一個是屬性,不是函式,直接取用。
老师你好,首先非常感谢你的教学,我是小白都能跟着做下来,但是遇到一个问题,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' 这是什么原因呢? 感谢老师
而且我在运行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,) ,是有()的,我不知道哪里不一样
這很可能只是細節版本的差異產生的輸出內容差異,實際的資料並沒有不同,所以可以不用太在乎這點輸出上的小落差。
30:26 可憐的Amy ,俗又大碗.....幫QQ
哈哈哈哈 ~~~~
聽到cp值不自覺鼻酸起來XD
XDDDDDDDD
cp值高不是好事😂😂😂
😂😂😂
彭彭老師到底會多少東西! 好厲害
我也是以年為單位,一直教一直學哦 :)