數據分析指北 (基礎之三從"完備"到基礎操作 select)
08-13
數據分析指北 (基礎之三從"完備"到基礎操作 select)
*Photo by Markus Spiske on Unsplash*微信公眾號:數據分析指北
*KNIME中的row filter*可以從截圖看到,row filter 支持各種條件過濾,比如選取符合某種條件的行,或是排除某種條件的行,普通的條件,通配符,正則表達式,或是範圍條件,它都是支持的。對於之前圖中"通過SELECT遴選特定列"的情況,我們只需要把模塊 Manipulation/Column/Filter/Column Filter模塊放進去就可以代替我們前面所說的
來自專欄數據分析指北
http://weixin.qq.com/r/HUwnP1XE6AiXrRFc9xkP (二維碼自動識別)
*歡迎關注公眾號 數據分析指北*數據分析指北 - 基礎(基礎數據操作之三,從"完備"到基礎操作 select)歷史回看:
數據分析指北 - 前言(02)
方法論 之 你會問問題嗎?數據分析指北 - 基礎(數據來源及輪廓)有必要搞清楚數據的原始出處以及大致輪廓(分布)。數據分析指北 - 基礎(基礎數據操作之一)計算機是怎麼處理表數據的,以及一些小學數學題?*Photo by Markus Spiske on Unsplash*微信公眾號:數據分析指北
關於完備
假如有人給你出了一套數學題,但從來沒有人教過你怎樣去做,甚至連基礎的操作運算符,加減乘除,你都是不知道的,需要你自己去發明。出題的人知道答案,只要存在 "加一","減一" 這兩個運算規則就可以解決這套題裡面的所有問題。你開始不停的研究啊研究,終於發明出來 "加一" 這個運算規則,但可惜的是,"加一" 這個運算規則,只能解決那套題中的部分問題,還有一些問題無論如何只通過 "加一" 是沒辦法解決的。這種情況下,你所知道的規則,就是不完備的(解決不了這套數學題中的所有問題)。你接著研究,終於又發明出來 "減一" 這個運算規則,bingo! 這套數學題中的所有問題都解決了!你發明的這兩個規則就是完備的。但你覺得做題還是有點慢,於是又發明出來 "加二","減二" 等等方便運算的規則,在這種情況下,你之前所發明的整個規則加起來,也是完備的。後面發明出來的規則在遇到一些特定的問題時,會方便快捷一些,但如果沒有這些規則,只通過 "加一","減一" 也是沒有問題的。另外一位同學,小T,和你面對著同樣一套數學題,但他的研究過程和你有些差異,他在研究出來 "加一" 規則之後,並沒有發明出來 "減一" 這個規則,而是發明出來了 "加負一" 這個規則。小T擁有的這兩個規則,也解決了這套數學題中的所有問題,雖然和你的最終結果有所差異,但也是完備的。以上就是完備的大概意思。在計算機中,有一種叫做圖靈完備的概念。數學家艾倫·圖靈(Alan Turing)發明了一台叫做"圖靈機"的東西,這台機器能夠計算可計算的一切問題。其他人發明出來的虛擬機或編程語言如果和 "圖靈機" 一樣計算可計算的一切問題,那麼這樣的虛擬機或編程語言就叫做圖靈完備,或是圖靈等價的。這個概念在計算機語言方面用的比較多。會幾種編程語言也許你曾遇到這樣的問題,"你會幾種編程語言?"。其實語言種類不是特別重要,只要你理解一種編程語言,其他大部分的編程語言中基礎的概念你就不用再學,只需要記記基本的格式就可以了。計算機程序無非就是,賦值語句,判斷分支語句,循環執行語句等。有了這些基本功能,這門語言就可以算"完備"了,有時這些語言會增加一些特別的功能方便用戶使用,但其實,如果沒有這些特別增加的功能,只使用一些基本功能,也是可以完成任務的。以上述完備例子中的數學題為例,如果你走了 "加一","加負一" 的研究路線,那麼在能解決現有問題的情況下,這就是一種 最小完備 的狀態,不再投入時間等資源就是 最實用 的一種方式,提綱挈領說的就是這個意思。在其他學科中,可能會用正交,最小正交等詞來表達近似概念。
這種思維方式我們會在後期有意無意的使用。之前的作業讓我們從之前的數據和部分作業繼續聊起。*示例數據*- 想得到只有班級和姓名組成的新表;
- 想得到只有2班同學的新表;
- 想得到姓"李"的同學的新表;
- 想得到2班同學且只有班級和姓名組成的新表;
- 想把上一個問題中得到的表的表頭--"班"改成"班級";
SQL是資料庫的標準語言,邏輯,結構都比較清晰,裡面的基礎語法可以認為是我們上面所提到的操作數據的 最小完備 的語法。鑒於本系列在工具層面會側重於 KNIME ,那麼下面描述邏輯會將SQL的 最小完備 操作對應到 KNIME 中去,以期用最小的時間以及精力代價獲得最大收益。
SQL的語法超級簡單,但這種超級簡單的語法卻能派生出一些複雜的操作。我們先看 SELECT 這個語法。SELECT in SQL
想遴選(select)數據出來,那麼必須得知道從什麼地方(from)去遴選什麼(*),條件是什麼(where)。我一般將select的操作分為以下兩種以及它們的組合。*通過SELECT遴選整行**通過SELECT遴選特定列*
第一種,通過 SELECT 遴選整行select * from sampleData where 1=1其中的 "*" 代表了要選取那一行中所有的列,where後面的部分可以列寫你的篩選條件,寫"1=1"只是想在這裡放一個佔位符,示意這裡放你的條件(只不過1=1
這個條件是永遠成立的)。比如你想要選出 "性別" 列中,元素值為"男"的列,那麼你只需要寫select * from sampleData where 性別=男就可以得到你的結果了。第二種,通過 SELECT 遴選特定列select column1, column2 from sampleData這句選擇展示了 sampleData 表中名叫 column1 和 column2 的列。好了,再看我們的作業用SQL的話怎麼做:
- 想得到只有班級和姓名組成的新表;
select 班級,姓名 from sampleData
- 想得到只有2班同學的新表;
select * from sampleData where 班級=2
- 想得到姓"李"的同學的新表;
select * from sampleData where 姓名 like "李%"
- 想得到2班同學且只有班級和姓名組成的新表;
select 班級,姓名 from sampleData where 班級=2
- 想把上一個問題中得到的表的表頭--"班"改成"班級";
select 班級 AS 班,姓名 from sampleData where 班級=2
SELECT in KNIME
對應於SQL中的select語句,KNIME要稍微麻煩一些(但帶來了其他好處)。我們上節已經把CSV文件導入到了 KNIME 中,這次只需要把對應的基本操作找出來就可以了。(在附錄2中我們對 KNIME 有基本介紹。)對於之前圖中"通過SELECT遴選整行"的情況,我們只需要把模塊 Manipulation/Row/Filter/Row Filter模塊放進去就可以代替我們前面所說的where
功能了。
select xxx,yyy
的功能了。*KNIME中的column filter*通過這兩個模塊的各種組合,就可以完成上面在SQL中完成的五道作業。第5題改表頭的特殊要求,需要我們找到KNIME中的一個叫 rename 的模塊,組合進去就可以了。本次作業是:熟悉一下這次談到的模塊,並自己組合一下試試看。
配套練習下載方法:關注公眾號,回復 "作業" 二字即可獲得下載鏈接。
回頭聊反饋,轉發或讚賞?推薦閱讀:
※數據分析基礎業務知識-APP用戶如何增長
※0014數據處理:檢查數據邏輯錯誤之IF函數與OR函數的用法
※Python數據分析基礎