Mobile App Statistics (Apple iOS app store)
上一篇我們提到了pandas最重要的兩個資料物件(沒有看過的可以點這個連結),但我們光會存取資料是不夠的,假設我們今天要分析的資料有一萬多筆,且每筆資料都有一百多個欄位,要能直接從如此龐大的資料中分析趨勢或是關聯,基本上是不可能的,所以今天的重點就是介紹如何檢視與定位資料。
這次我們一樣會使用apple(AppleStore.csv)的公開資料,其中紀錄了兩個app平台商店中所有app的分類、評分、下載量、名稱、大小⋯⋯等相關資料,假設我們是一間app開發公司的分析人員,我們想研究目前市場中哪些分類的評分以及下載量是比較高的。
首先我們先試著利用 pd.read_csv() 讀取檔案:
import pandas as pd app = pd.read_csv('AppleStore.csv')
這邊我們做一個小補充,大部分我們在進行資料分析時,常會遇到不同的檔案類型,像是.csv, .txt 甚至是.spss之類的檔案,為了能夠方便讀取各類型的檔案,pandas套件提供了非常多的方法讓我們使用,其中最常使用的莫過於 pd.read_csv() ,畢竟各大公開資料平台以及所有統計相關軟體都可以接受csv檔,所以csv檔案算是非常常見的一種資料檔案類型。
要讀入csv檔也非常的簡單,只要使用 pd.read_csv() 方法並在括號內引入檔案名稱加上副檔名即可,不過有時候會遇到編碼的問題,大部分檔案都可以使用 UTF-8 編碼, 不過有些檔案的編碼可能比較不一樣,會導致檔案讀取錯誤或是出現亂碼,所以要調整 encoding 參數:
data1 = pd.read_csv('DataScience/data1.csv',encoding='UTF-8') #UTF-8編碼 data2 = pd.read_csv('DataScience/data2.csv',encoding='iso-8859-1') #其他編碼
除了上面的 iso-8859-1 編碼之外,也可以試試看 encoding=’latin1′, encoding=’cp1252′ 這些編碼(編碼的使用可能會因為語系的不同而有差異,這邊提供的主要是英文常用的編碼)。
以上是csv檔案基本的讀取方法,如果有其他類型檔案的讀取需求,可以詳閱官方文件。
在讀入資料之後,接著就是查看資料內容以及確認有哪些欄位,所以我們常會使用 df.head() 方法,顯示前五筆資料,講到這邊你可能會有個小疑問就是「前面的方法都是pd 開頭,這邊怎麼變成 df 了?!」,這是因為前面的方法都是直接在pandas套件本身的方法,而上一篇文章我們有說過,我們進行資料讀取之後,會回傳 DataFrame 或是 Series 物件,所以針對 DataFrame 與 Series 的資料操作都是隸屬這兩個物件之下的方法,另外我們在解釋這些方法時為了方便,會簡稱 Dataframe 為 df ,不過要記得!在使用這些方法時,前面不是掛 df 或 Series 而是使用你存取二維陣列的變數。就像下面這樣:
import pandas as pd app = pd.read_csv('AppleStore.csv') print(app.head())
id track_name size_bytes currency price 0 284882215 Facebook 389879808 USD 0.0 1 389801252 Instagram 113954816 USD 0.0 2 529479190 Clash of Clans 116476928 USD 0.0 3 420009108 Temple Run 65921024 USD 0.0 4 284035177 Pandora - Music & Radio 130242560 USD 0.0 rating_count_tot rating_count_ver user_rating user_rating_ver ver 0 2974676 212 3.5 3.5 95.0 1 2161558 1289 4.5 4.0 10.23 2 2130805 579 4.5 4.5 9.24.12 3 1724546 3842 4.5 4.0 1.6.2 4 1126879 3594 4.0 4.5 8.4.1 cont_rating prime_genre sup_devices.num ipadSc_urls.num lang.num 0 4+ Social Networking 37 1 29 1 12+ Photo & Video 37 0 29 2 9+ Games 38 5 18 3 9+ Games 40 5 1 4 12+ Music 37 4 1 vpp_lic 0 1 1 1 2 1 3 1 4 1
然而 df.head() 本身是預設顯示前五筆資料,這個資料顯示數量是可以調整的,我們只要在括號裡輸入我們要顯示的數量即可,例如:df.head(10) 這樣就會顯示前10筆資料。
跟 df.head() 相反,df.tail() 會顯示DataFrame最後面的5筆資料,而且資料顯示數量也是可調整的,這個方法相對於 df.head() 比較不常使用到,大部分是在進行double check 資料是否如我們所想像一樣的時候。
以上兩種方法是最基本的資料顯示方式,接下來要介紹如何查看DataFrame的範圍大小、檢視基本的資料分佈與欄位類型。
df.shape 是二維陣列的其中一個屬性,他記錄了整張資料的長度(資料筆數)與寬度(欄位數量),它可以幫助我們快速建立對於這張資料的範圍認知,以便選擇要用什麼樣的策略進行下一步分析。
print(app.shape) >>> (7197, 16)
上面的範例中,我們列印出 app.shape 檢視app的資料範圍,可以看見它回傳了一個 tuple(), 第一個數字代表了資料筆數(共7197筆資料),第二個數字代表了欄位數量(每筆資料有16個欄位)。
有時候我們會遇到資料出現過多欄位,造成顯示長度不夠而有些不方便的情況,這時候我們會先觀察所有欄位的名稱,畢竟光是欄位名稱有時候就包含非常多的資訊了:
print(app.columns) print(app.index)
下面的結果分別是df.columns 與 df.index ,他們都是 DataFrame物件的屬性且類似 list() 或是 range() ,兩個屬性除了能夠方便我們了解所有欄位或索引的名稱與排列之外,也是在下一個階段「資料清理」中非常重要的兩個屬性。
#app.columns Index(['id', 'track_name', 'size_bytes', 'currency', 'price', 'rating_count_tot', 'rating_count_ver', 'user_rating', 'user_rating_ver', 'ver', 'cont_rating', 'prime_genre', 'sup_devices.num', 'ipadSc_urls.num', 'lang.num', 'vpp_lic'], dtype='object') #app.index RangeIndex(start=0, stop=7197, step=1)
想必大家應該都有基本資料分佈的概念,df.describe() 方法會計算資料中所有欄位的平均數、中位數、最大值、最小值⋯⋯等統計數值。讓我們可以大致上了解每個欄位的資料分佈。
print(app.describe())
不過如果仔細數一下下面的結果,會發現只顯示了11個欄位,但剛才 df.shape 卻顯示有16欄位啊!?出現這樣的差異是因為,這張app資料有些欄位型別是非數值的,例如:app名稱、分類,如果用 df.describe() 方法顯示整張資料的所有欄位,他只會顯示數值資料的欄位,除非你選定的欄位都是非數值資料,而如何選定資料的方法我們會在下面提到。
id size_bytes price rating_count_tot count 7.197000e+03 7.197000e+03 7197.000000 7.197000e+03 mean 8.631310e+08 1.991345e+08 1.726218 1.289291e+04 std 2.712368e+08 3.592069e+08 5.833006 7.573941e+04 min 2.816565e+08 5.898240e+05 0.000000 0.000000e+00 25% 6.000937e+08 4.692275e+07 0.000000 2.800000e+01 50% 9.781482e+08 9.715302e+07 0.000000 3.000000e+02 75% 1.082310e+09 1.819249e+08 1.990000 2.793000e+03 max 1.188376e+09 4.025970e+09 299.990000 2.974676e+06 rating_count_ver user_rating user_rating_ver sup_devices.num count 7197.000000 7197.000000 7197.000000 7197.000000 mean 460.373906 3.526956 3.253578 37.361817 std 3920.455183 1.517948 1.809363 3.737715 min 0.000000 0.000000 0.000000 9.000000 25% 1.000000 3.500000 2.500000 37.000000 50% 23.000000 4.000000 4.000000 37.000000 75% 140.000000 4.500000 4.500000 38.000000 max 177050.000000 5.000000 5.000000 47.000000 ipadSc_urls.num lang.num vpp_lic count 7197.000000 7197.000000 7197.000000 mean 3.707100 5.434903 0.993053 std 1.986005 7.919593 0.083066 min 0.000000 0.000000 0.000000 25% 3.000000 1.000000 1.000000 50% 5.000000 1.000000 1.000000 75% 5.000000 8.000000 1.000000 max 5.000000 75.000000 1.000000
接下來的這個方法 df.info() 也非常實用,這個方法會回傳所有欄位的屬性像是 int (整數), float64 (浮點數)或是 object (字串),以及該欄位有多少非空值,空值在資料處理中是一個非常重要的概念,因為我們有時收集的資料並不會非常完整,可能會因為一些不可控因素而有缺漏,所以這些缺漏的資料就會顯示為空值(NaN),過多的空值會嚴重影響我們的分析結果,是我們相當不樂見的,而 df.info() 這個方法最重要的價值也就在於它可以讓我們清楚知道哪些欄位有非常多的空值,哪些欄位擁有較完整的資料,以及這些資料的屬性是什麼,可以如何運用:
print(app.info())
<class 'pandas.core.frame.DataFrame'> RangeIndex: 7197 entries, 0 to 7196 Data columns (total 16 columns): id 7197 non-null int64 track_name 7197 non-null object size_bytes 7197 non-null int64 currency 7197 non-null object price 7197 non-null float64 rating_count_tot 7197 non-null int64 rating_count_ver 7197 non-null int64 user_rating 7197 non-null float64 user_rating_ver 7197 non-null float64 ver 7197 non-null object cont_rating 7197 non-null object prime_genre 7197 non-null object sup_devices.num 7197 non-null int64 ipadSc_urls.num 7197 non-null int64 lang.num 7197 non-null int64 vpp_lic 7197 non-null int64 dtypes: float64(3), int64(8), object(5) memory usage: 899.7+ KB None
上面的結果從左到右分別是「欄位名稱」→ 「非空值數量」→ 「欄位型別」,從非空值數量上來看,我們所使用的公開資料非常的完整,每個欄位都沒有空值出現,這是非常好的現象,代表這些資料的分析的準確性不會受到空值的影響。
以上所有的屬性與方法都是在檢視資料時很常用到的工具,基本上在讀取新資料時,我們都會利用這些工具初步掌握整張資料的概況,讓自己不會再龐大的資料中「迷失方向」,接下來我們要介紹這篇文章的另一個重點——「如何定位資料」。
在前面介紹 df.columns 的時候有提到,有時候會發生因為顯示長度不夠導致資料會換行顯示,讓資料在比較的時候有些不方便的情況。其實我們在分析資料的時候大多時間都是聚焦在「跟研究目標有關係的幾個欄位」,並不用無時無刻都要把整張資料叫出來,所以我們非常需要一個方法讓我們可以只呼叫某幾個欄位或是某幾筆資料,也就是「資料定位」,之所以會稱之為「定位」,是因為我們的資料就像是一個直角坐標,x軸為欄位(columns),y軸為索引(index),單筆資料就是直角座標上的「橫線」,每一個欄位就是一條條「直線」,一格資料可以把它視為一個「點」,而我們就是使用這個類似直角坐標的系統方法定位出我們所需要的資料。
print(app.loc[0:9,['track_name','price','user_rating']])
從上面的範例中可以看到:
逗號左邊是 0:9 就是呼叫前10筆資料,這個功能有點像是 list() 物件的slice功能,不同的地方是冒號後面的序數是包含的,所以有顯示到第九號資料。
逗號右邊就是提取 track_name , price , user_rating 欄位,提取方式跟 index 不同,因為 columns 的名稱是字串,用slice的方式提取較不直觀,所以建議使用 list() 把所有的欄位包起來放在逗號右邊。
track_name price user_rating 0 Facebook 0.0 3.5 1 Instagram 0.0 4.5 2 Clash of Clans 0.0 4.5 3 Temple Run 0.0 4.5 4 Pandora - Music & Radio 0.0 4.0 5 Pinterest 0.0 4.5 6 Bible 0.0 4.5 7 Candy Crush Saga 0.0 4.5 8 Spotify Music 0.0 4.5 9 Angry Birds 0.0 4.5
上面這種定位方式是提取多筆資料多個欄位的方式,如果只要提取多筆資料的全部欄位,或是多個欄位的全部資料,可以用下面的方式進行定位:
ps.如果只有冒號,代表提取全部資料。
app.loc[0:9,:] #提取0~9前十筆資料的全部欄位 app.loc[:,['track_name','price']] #提取track_name,price欄位的所有資料 app.loc[0,:] #提取第一筆資料的所有欄位 app.loc[:,'track_name'] #提取track_name欄位的所有資料 app.loc[0,'track_name'] #提取第一筆資料的track_name欄位
上面就是各種不同定位資料的形式,因為篇幅問題就不特別把結果顯示出來了~大家可以複製上方的程式碼試試看結果會是什麼樣子。
不過 df.loc[] 如果是提取多個或單個欄位全部的資料時,是可以直接使用中括號提取的,就像下方的程式碼:
app['track_name'] #提取單一欄位的所有資料 app[['track_name','price']] #提取track_name,price欄位的所有資料 cols = ['track_name','price'] #將要提取欄位名稱的list賦值為變數,再將變數作為app[]的定位欄位 app[cols]
因為我們在分析資料時,很常需要提取特定 columns,分析這些欄位的資料或數值,比較少會
需要提取某幾筆 index 的資料做分析, 這樣的情形比較多會發生在要做資料篩選的時候,像是全部
資料中符合某一條件的資料有哪些之類的情形,這個部分就會使用條件作為遮罩(mask)進行資料篩選,
這也是我們下一篇要介紹的重點。
Written by
一個不務正業的企管人,喜歡有創造性的事物,從管理到設計到程式,目前正在鑽研資料科學以及網頁前端開發,不知從什麼時候開始已經習慣了每天coding的日子。
—轉自好文作者Glove Yen_Data Science_Python資料處理套件part2 – Pandas 檢視與定位資料
如果你喜歡他的文章、Python資料分析有興趣,歡迎回到他的Blog: glove-coding看更多:)
或接續觀看Pandas 第4講:Python資料處理套件Pandas條件篩選資料
📒 Python Pandas 系列文章:
Pandas 第1講:Python資料處理套件Pandas簡介
Pandas 第2講:Python資料處理套件Pandas資料儲存物件
Pandas 第3講:Python資料處理套件Pandas檢視與定位資料(本文)
Pandas 第4講:Python資料處理套件Pandas條件篩選資料
Pandas 第5講:Python資料處理套件Pandas整理資料欄位與型別
Pandas 第6講:Python資料處理套件Pandas 資料字串處理
Pandas 第7講:Python資料處理套件Pandas數值處理與基礎統計量
快樂學程式在Udemy 也推出了以Pandas 套件進行資料處理的實戰課程,這次是將Python已視覺化的方式
對資料進行解析,只要一個假日拉高你的職場競爭力!快來這裡一起快樂學程式!
如果你的入門還在單打獨鬥,歡迎來到快樂學程式找到志同道合的夥伴,你的自學之路不孤單。
疫情之下,原本實體活動全都改成線上,活動分享全都在網路上很容易錯過,這邊整理了幾個跟數位教學相關的活動資訊給大家參考,分享順序為活動時間⏰ 1. Google Workspace技術整合術 Google Workspace for Education (原 G Suite 教育版) 能透過 Gmail、Google Drive、Google Calender、Google Meet 和 Classroom 等通訊與協作應用程式創造輕鬆與順暢的學習環境,並促進協同合作以提升數位學習與教學成效,而且還會為學校資料提供雲端安全性防護…
實體的教室變成一格一格的畫面,原本吵雜的下課時間也變成掛斷通話的系統聲。原本在班級中的歸屬感慢慢消失了,久而久之,孩子的對於學習,不再有群體的感覺,只是孤軍一人學習、複習、考試,甚至是畢業典禮都少了一份臨場感。因此,今天要和大家介紹一款現在在教育界還很少被提到的軟體-Gather。 Gather 如果你還不知道Gather,或是直覺的把Gather與虛擬會議室連結在一起,不妨先看看Gather裡的特色: 介面是像素型RPG 每個人自由創建一個角色 上下左右輕易控制角色 走道其他角色旁邊能互相討論 小遊戲battle 光是這五點特色,就足以推派它成為遠距教學的工具,除了打造不同空間的地圖外,最特別的是Gahter打造前所未有的臨場感,人與人之間只有靠近到一定距離,才能聽到彼此說話聲音,而相對應的,離開後聲音就會漸漸聽不到,就連白噪音的設計也是如此,非常的逼真。 不知道老師們會不會因為搭建地圖覺得麻煩,或是看到2D介面怕學生當遊戲在玩而不考慮這款軟體,換個角度思考,藉由不同地區的老師們集思廣益,打造出最適合學生學習的環境,像是不同學科的教室、戶外自然生態區、操場、籃球場等等....都可以更貼近真實校園,而像素的介面正好提高學生的學習意願,老師們擔心學生過於沉迷時,也能用全體廣播放上課鐘聲,或是讓學生們聚集在同一區,鏡頭站起來動一動 (另外推薦Active Arcade -> 趣味運動的APP ),就像早操一樣很真實。 線上教學缺乏臨場感,Gather可以創造了讓大家「一起在一個遊戲世界」的凝聚力。縱使Google Meet、Teams 雖然也可以進行討論,但若要每堂課要穿梭在不同會議間,節奏不流暢,使用Gather可以讓學生更自由地移動,相對應的老師也可以神出鬼沒地到處「旁聽」。 教孩子用科技解決問題,如果老師們也努力著示範給孩子看,創造出獨一無二的學習空間,相信對於孩子學習的歷程中,有莫大收穫。但到底怎麼開始使用?別擔心,這次快樂學程式邀請到Gahter界的大神 阿岳,要來和大家分享Gather的6大應用技巧,限名額唷~…
HTML入門&基本觀念介紹! 構成一個網頁,最重要的就是他的結構,而HTML就像是他的骨架,而CSS就是像是我們身體上的肌肉一般,而JS則像是人體的神經、血管般調整著我們身體、傳遞訊息,那麼HTML究竟是指哪些語法呢? 什麼是HTML? HTML全文又稱為HyperText Markup language ,也就是所謂的超文本標記語言,是網頁構成的基本要素,換言之,網頁就是由一堆html所構成,透過瀏覽器,顯示文字、圖片、以及其他相關我們可以在網頁上看見的基本元素。而對於剛學程式的朋友來說,HTML有以下幾個重點: HTML的基本架構: HTML的基本觀念與優點1.容易學習-HTML的文檔製作非常簡單易懂﹐功能強大之餘還支持不同格式的文件鑲入。2.製作門檻低-HTML是文本﹐它需要瀏覽器的解釋。只要你學會了HTML﹐你就可以直接在Windows的記事本或寫字版上進行製作和編輯﹐當然你也可以用WPS來編寫﹐只要注意在存檔的時候用.htm或.html來做檔名就可以了3.有利於搜尋引擎理解你的內容,透過HTML所構成的頁面被稱作所謂的”靜態頁面”﹐而Google爬蟲會優先收錄靜態網頁﹐所以HTML對於Google來說就像是鯊魚聞到血腥味一樣﹐有利於吸引Google爬蟲。4.加快瀏覽速度-因為靜態網頁無需連接數據庫﹐因此比打開動態網頁的速度較快﹐對於消費者體驗來說有所幫助。5.網站更安全-因為HTML頁面不會受Asp相關漏洞所影響。 HTML的缺點與限制 1.太簡單﹐不能適應現在越來越發達的網路世界和應用的需要﹐比如手機﹑PDA﹑信息家電等都不能直接顯示HTML2.太龐大﹐由於HTML代碼不規范﹑臃腫﹐瀏覽器需要足夠智能和龐大才能夠正確顯示HTML。顯然在你的PDA上裝一個IE6是不可能的。空間不夠﹐運算也跟不上3.數據與表現混雜。這樣你的頁面要改變顯示﹐就必須重新制作HTML。對不同的網路設備顯示同樣的數據都需要制作不同的HTML4.只能對文本進行排版﹐而且HTML樣式使用標準文本標識﹐不能創建一些特殊效果 所以我該如何學習HTML? 有什麼比較快的方法嗎? 答案是沒有的﹐學習程式語言就像是學習廚藝一樣﹐只有透過不停的嘗試﹑嘗試和嘗試才能讓自己有所成長﹐並且慢慢強大。過程中你會一直遇上困難和失敗﹐但你在不斷解決困難的過程中能夠不斷發掘新的知識﹐從失敗中發才能不停的成長。無論你是學習那一種程式語言﹐都需要經歷困難和失敗才能讓自己更加強大﹐正所謂:不經一番寒徹骨,怎得梅花撲鼻香呢?對吧﹐我們能做的不是要找捷徑﹐而是透過不同的媒介和平台去不斷學習﹐那麼下面快樂學程式會為大家介紹一些很棒的程式教學網站﹐讓大家可以不斷提升自己。 1.w3schools.com- 語法練習的好地方這個網站是目前全球訪問量最大的網頁開發教程網站﹐網站裡有多種程式語言的教學﹐而且每種程式語言由淺到深的解說﹐從語言的介紹到不同的功能和方法都會分章節說明。所以無論你是從零開始學的白紙﹐還是已經在學習但遇到困難的新手都可以在這個網站上找到相關資訊﹐是個非常不錯的網站。那麼網址我們當然要雙手奉上﹐請慢用https://www.w3schools.com/ 2.CodeAcademy- 免費的教學網站這是全球其中一個最受歡迎的免費coding教學網站﹐已經有超過2400萬人透過這個網站學習到了如何去coding。這個網站是非常適合新手入門的同學去學習的﹐網站會一步一步仔細的教導而且還有實作﹐所以學習起來非常的快速! 3.StackOverflow- 實際案例與疑難雜症的解決處 這個網站比較適合一些已經有在嘗試動手實作的同學﹐當你在coding的時候遇上困難了﹐那麼你可以在這個可以解決超過80種程式語言問題的網站上找到答案﹐讓你的coding之路更加順暢。 如果你覺得爬網站麻煩又費時,不妨直接點擊快樂學程式的網頁前端課程,老師直接手把手帶你入門HTML !完整的基礎入門課程省下你獨自摸索花費的時間! 課程上架Udemy ! 準備一個輕鬆的週末,只要一天的時間,帶你建置靜態網頁。從實作中打開靜態網頁的大門,讓你的研究之路不是只有自己,有我們跟你一起努力!課程中你可以瞭解網站建置的世界觀與網站版型掌握HTML5的使用方式掌握 CSS3的使用方式使用Bootstrap處理前端UI框架現在開始上課!如果你的入門還在單打獨鬥,歡迎來到快樂學程式找到志同道合的夥伴,你的自學之路不孤單。快樂學程式
什麼是HTML? HTML全名是HyperText Markup Language,是一種描述超文件的註記語言SGML(Standard Generalized Markup Language)所制訂出的一種網頁語言,是編寫網頁的基本語言,基本上現行的瀏覽器都可以讀取HTML,使用HTML可以編輯設計出網頁,也可以在網頁中加入所有HTML語言可支援的方式,例如表格、表單、圖片、文字、連結、程式等等。 HTML介紹與基本語法整理 不管你是小時候從撰寫無名小站為了要修改你的樣式,而開始瞭解HTML和CSS為何物,或是長大因為介面設計或前端工程開始踏入網頁的世界。HTML和CSS對於網站的重要性經過多年依然歷久不衰。在本篇會對HTML進行基礎的介紹並幫你整理出基本語法提供你在寫網頁時的快速參考! 編寫基本的HTML: 先讓大家看一下一個基本的HTML文件格式為: <HTML> <HEAD> <TITLE>網頁主題</TITLE> <Meta> </HEAD> <BODY>…
PHP是什麼?3分鐘PHP基本介紹! 大家安安﹐快樂學程式這一次要跟大家分享PHP這種程式語言。希望幫助對於PHP有興趣的新手們可以透過我們的文章對這種語言有初步認識。一如以往﹐我們會分享以下幾項有關PHP的知識。 PHP是什麼? PHP語言的全名是(PHP: Hypertext Preprocessor),和ASP、JSP等都是動態網頁開發語言,不過,PHP擁有跨平台的能力,無論是在Linux(最適合)、Unix、 Windows都可以執行運作,不像微軟 的ASP只能在Windows平台上執行,而且PHP是免費的,並可結合多種資料庫伺服器,如:MySQL、PostgreSQL、dBase、mSQL、Informix、ODBC、Oracle等。 PHP語言是伺服器端(Server)執行的網頁,不像一般HTML網頁,只要單機下開啟檔案就可以檢視網頁,PHP必須先在伺服器端執行完後,再將結果傳至使用者端(Client)的瀏覽器中檢視結果,所以必須使用網站伺 服器,且伺服器要支援PHP。 如何學好PHP? 要學好PHP,要有目的,要有一個想寫的東西,寫個學校網站,寫個校友系統,寫個簡單的新聞區或相簿...等,都可以,盡可能的和工作和生活結合,利用程式來簡化繁瑣的人工步驟,或者提昇工作效率,有目標,才會有動力,才會有想法。 學PHP不需要背,背不完的,只要懂就好了。像函數就不用背,常用的打久了你就背起來了,不常用的,等到要用時,知道去哪裡找就好。換言之,函數懂越多,功力越高強。 程式碼可以複製貼上,但一定要知道為什麼要這麼寫,不要傻傻的照著打,可以的話,自己打一遍最好,最上乘就是可以說出每一行程式碼的作用和前因後果。或者,故意打錯,看看會怎樣。錯誤訊息看久了,功力也就提昇了。 PHP程式碼執行方式 透過 Web Server 方式:例如利用 Apache…
Sildenafil citrate oral jelly Combiné avec les données de départs 2, on leur a demandé de type 5 de tadalafil…