在資料驅動的商業環境中,有效地整合、分組和視覺化資料至關重要。本文將探討如何運用 R 語言和 Python 處理和分析資料,從資料清理、轉換到分組,再到視覺化呈現,提供一個完整的資料分析流程。透過實際案例操作,示範如何合併不同來源的資料,並利用視覺化工具洞察資料的模式和趨勢,進而協助商業決策。這對於理解市場動態、客戶行為和業務績效至關重要,能幫助企業從資料中提取有價值的商業洞見。
玄貓:資料整合與分組
在進行資料分析之前,首先需要確保資料的完整性和一致性。這涉及到對資料進行清理、轉換和分組。在這個過程中,我們將使用 R 語言和 Python 進行實踵。
R 語言實踐
首先,讓我們使用 R 語言對資料進行分組和統計分析。假設我們有兩個資料表 mydata_demo_T
和 mydata_demo_C
,代表測試組和控制組的資料。
library(dplyr)
# 計算每個城市的藍領作業員比例
aggregate(BluCollarOcc ~ City, data = mydata_demo_T, FUN = mean)
aggregate(BluCollarOcc ~ City, data = mydata_demo_C, FUN = mean)
# 繪製圖表 6.3:按玄貓分組的藍領作業員比例
#...
# 計算每個城市和性別的分佈
xtabs(~ City + Gender, data = mydata_demo_T)
xtabs(~ City + Gender, data = mydata_demo_C)
# 繪製圖表 6.4:按玄貓和性別分組的分佈
#...
接下來,我們需要將測試組和控制組的資料合併,並建立一個新的欄位 test_group
來區分這兩組。
# 合併測試組和控制組的資料
mydata_TC <- sqldf("
select a1.customer_id, 'T' as test_group
from mydata_T A1
UNION
select a1.customer_id, 'C' as test_group
from mydata_C A1
")
# 顯示合併後的資料
print(head(mydata_TC))
最後,將合併後的資料儲存到一個檔案中,以便於後續的分析。
# 將合併後的資料儲存到檔案中
write.csv(mydata_TC, file = "tc_groups.csv")
Python 實踐
現在,讓我們使用 Python 進行相同的操作。首先,需要匯入必要的套件,包括 pandas
、sklearn.cross_validation
和 pandasql
。
import os
import pandas as pd
from sklearn.cross_validation import train_test_split
from pandasql import sqldf
# 設定工作目錄
os.getcwd()
os.chdir("C:\\Desktop\\ANALYSIS\\")
os.getcwd()
# 載入 Customer_List.csv 檔案
customer_list = pd.read_csv("Customer_List.csv")
接下來,需要對資料進行分組和統計分析。這個過程與 R 語言實踐類別似,但使用的是 Python 的語法和函式。
# 計算每個城市的藍領作業員比例
#...
# 繪製圖表 6.3:按玄貓分組的藍領作業員比例
#...
# 計算每個城市和性別的分佈
#...
# 繪製圖表 6.4:按玄貓和性別分組的分佈
#...
最後,需要將測試組和控制組的資料合併,並建立一個新的欄位 test_group
來區分這兩組。
# 合併測試組和控制組的資料
mydata_TC = pd.concat([mydata_T, mydata_C], ignore_index=True)
mydata_TC['test_group'] = mydata_TC['customer_id'].apply(lambda x: 'T' if x in mydata_T['customer_id'].values else 'C')
# 將合併後的資料儲存到檔案中
mydata_TC.to_csv("tc_groups.csv", index=False)
這樣,就完成了資料的整合和分組。接下來,可以進一步進行資料分析和機器學習模型的建立。
資料前處理與分群分析
在進行資料分析之前,首先需要將資料匯入並進行適當的前處理。這包括了載入必要的函式庫,如 pandas
,並使用 read_csv
函式從 CSV 檔案中讀取資料。
import pandas as pd
from sklearn.model_selection import train_test_split
from pandasql import sqldf
# 載入客戶列表資料
c6_mydata_1 = pd.read_csv('Customer_List.csv', header=0)
# 將資料分割為測試組和控制組,各佔 50%
mydata_T, mydata_C = train_test_split(c6_mydata_1, test_size=0.5)
接下來,描述性的統計可以幫助我們瞭解資料的分佈情況。使用 describe
方法可以得到各個欄位的統計摘要,包括計數、均值、標準差、最小值、最大值等。
# 顯示測試組和控制組的描述性統計
print(mydata_T.describe())
print(mydata_C.describe())
然後,載入人口統計資料,並使用 sqldf
進行 SQL 查詢,將測試組和控制組的資料與人口統計資料合併。
# 載入人口統計資料
mydata_demographics = pd.read_csv('Demographics.csv', header=0)
# 定義 SQL 查詢陳述式,合併測試組和人口統計資料
query_T = """
SELECT a1.customer_id, b1.Gender, b1.City, b1.BluCollarOcc
FROM mydata_T A1
LEFT JOIN mydata_demographics B1 ON a1.customer_id = b1.customer_id
"""
# 執行 SQL 查詢,得到合併後的測試組資料
mydata_demo_T = sqldf(query_T, globals())
# 定義 SQL 查詢陳述式,合併控制組和人口統計資料
query_C = """
SELECT a1.customer_id, b1.Gender, b1.City, b1.BluCollarOcc
FROM mydata_C A1
LEFT JOIN mydata_demographics B1 ON a1.customer_id = b1.customer_id
"""
# 執行 SQL 查詢,得到合併後的控制組資料
mydata_demo_C = sqldf(query_C, globals())
最後,對合併後的資料進行分群分析,以驗證隨機性。這裡以城市為分群依據,計算每個城市中藍領作業員的比例。
# 對測試組資料進行分群,計算每個城市的藍領作業員比例
grouped_T = mydata_demo_T.groupby('City')
print(grouped_T['BluCollarOcc'].mean())
# 對控制組資料進行分群,計算每個城市的藍領作業員比例
grouped_C = mydata_demo_C.groupby('City')
print(grouped_C['BluCollarOcc'].mean())
這些步驟可以幫助我們更好地理解資料的分佈情況和隨機性,並為後續的分析提供基礎。
資料視覺化與探索
資料視覺化是資料科學中的一個重要步驟,能夠幫助我們快速瞭解資料的分佈、模式和相關性。R語言是一個強大的工具,提供了多種視覺化選擇,包括線圖、點圖、柱狀圖、2D和3D圖、盒狀圖、餅圖、散點圖、熱力圖、氣泡圖和填充面積圖。
資料視覺化的重要性
資料視覺化對於資料探索非常重要,因為它能夠幫助我們:
- 快速瞭解資料的分佈和模式
- 識別資料中的相關性和關聯
- 以視覺化的方式呈現結果,使其更容易被理解和解釋
ggplot2套件
ggplot2是一個強大的視覺化套件,提供了多種視覺化選擇。以下是使用ggplot2建立直方圖的基本方法:
library(ggplot2)
ggplot(data = c7_mydata_1, aes(x = City)) +
geom_bar()
這段程式碼會建立一個基本的直方圖,顯示城市的分佈。
自定義視覺化
我們可以透過指定顏色、邊框和填充色等引數來自定義視覺化。例如:
ggplot(data = c7_mydata_1, aes(x = City)) +
geom_bar(color = "black", fill = "#6495ED")
這段程式碼會建立一個直方圖,具有黑色邊框和Cornflower Blue(#6495ED)填充色。
散點圖
散點圖可以用於顯示兩個變數之間的相關性。以下是使用ggplot2建立散點圖的範例:
ggplot(data = c7_mydata_1, aes(x = HHIncomeMed, y = BluCollarOcc)) +
geom_point(shape = 1)
這段程式碼會建立一個散點圖,顯示家庭收入中位數(HHIncomeMed)和藍領職業人數(BluCollarOcc)之間的相關性。
qplot函式
qplot函式是一個簡單的視覺化函式,提供了一種快速建立視覺化的方法。以下是使用qplot函式建立直方圖的範例:
c7_graph_output_1 <- qplot(City, HHIncomeMed, data = c7_mydata_1,
color = Gender, xlab = "City", ylab = "Income",
main = "City vs. \n Income")
這段程式碼會建立一個直方圖,顯示城市和家庭收入中位數之間的相關性,並根據性別進行分組。
從資料整合、分群到視覺化探索,我們可以觀察到資料分析流程的關鍵步驟。上述程式碼示範瞭如何使用 R 和 Python 處理資料,包含資料清理、轉換、合併、分組以及初步的探索性分析。
分析的重點在於理解資料的分佈和模式,例如藍領職業比例在不同城市和性別的差異。透過 R 語言的 aggregate
和 xtabs
函式,以及 Python 的 groupby
和其他 Pandas 功能,我們可以有效地進行分組統計。同時,利用 ggplot2 和 qplot 等視覺化工具,可以更直觀地理解資料的特性,例如城市與收入的關係,以及性別的影響。
然而,程式碼片段中缺少關鍵的視覺化圖表程式碼 (例如 R 的圖表 6.3 和 6.4,以及 Python 的對應圖表),這限制了我們更全面地理解資料。此外,Python 的程式碼片段中,合併測試組和控制組資料的部分,直接使用了 mydata_T
和 mydata_C
,但未明確其來源和處理方式,這可能造成程式碼理解上的困難。建議補充完整程式碼,包含資料載入、處理、以及圖表繪製的完整流程,以提高可讀性和可重複性。
未來分析方向可以包含更深入的統計分析,例如假設檢定,以驗證觀察到的差異是否具有統計顯著性。此外,可以考慮更進階的機器學習模型,例如預測模型,以根據已有的資料預測未來的趨勢。更精細的視覺化呈現,例如互動式圖表,也能夠幫助我們更深入地探索資料,並從中挖掘更多有價值的洞察。 最後,針對高階管理者的決策需求,可以將分析結果轉化為具體的商業策略建議,例如目標市場的選擇、產品的定位等等。