本文將介紹如何使用ChatGPT進行自動數據分析,使用的工具有matplotlib、seaborn和plotly。
使用建議與心得
在每日通過ChatGPT進行學習(xi) 和編碼的過程中,筆者發現了如下幾個(ge) 規律:
- ChatGPT生成代碼的能力取決於問題的難度,以及原始數據集中類似數據的多少。
- ChatGPT生成結果的有效性取決於提問模板、給出的例子和背景信息。
因此為(wei) 了簡化問題難度,也為(wei) 了ChatGPT能理解數據集,並直接寫(xie) 出正確的代碼(不需要修改就可以運行),需要讓ChatGPT快速數據集的列明和列類型,將數據集進行描述。
下麵是分別使用matplotlib、seaborn和plotly進行數據分析樣例,ChatGPT輸出的代碼都可以直接運行。
注明:前提是已經讀取了相關(guan) 數據集。
場景1:使用matplotlib
相關性分析
魔法命令
數據表 iris_df 存在Pandas中,結構如下 - sepal length (cm), 類型 float64 - sepal width (cm), 類型 float64 - petal length (cm), 類型 float64 - petal width (cm), 類型 float64 - target, 類型 int64
寫(xie) 出Python代碼,使用matplotlib進行相關(guan) 性分析的代碼
ChatGPT輸出
import matplotlib.pyplot as plt
# 計算相關(guan) 係數矩陣
corr_matrix = iris_df.corr()
# 繪製相關(guan) 係數矩陣熱力圖
fig, ax = plt.subplots()
im = ax.imshow(corr_matrix, cmap='coolwarm')
# 添加顏色條
cbar = ax.figure.colorbar(im, ax=ax)
# 設置標簽
ax.set_xticks(range(len(corr_matrix)))
ax.set_yticks(range(len(corr_matrix)))
ax.set_xticklabels(corr_matrix.columns)
ax.set_yticklabels(corr_matrix.columns)
plt.setp(ax.get_xticklabels(), rotation=45, ha="right", rotation_mode="anchor")
# 添加數值標注
for i in range(len(corr_matrix)): for j in range(len(corr_matrix)):
text = ax.text(j, i, round(corr_matrix.iloc[i, j], 2), ha="center", va="center", color="w")
# 設置圖表標題
ax.set_title("Correlation Matrix")
# 顯示圖表
plt.show()
自動分析
魔法命令
數據表 iris_df 存在Pandas中,結構如下 - sepal length (cm), 類型 float64 - sepal width (cm), 類型 float64 - petal length (cm), 類型 float64 - petal width (cm), 類型 float64 - target, 類型 int64
寫(xie) 出Python代碼,使用matplotlib中3種方法分析每列與(yu) 標簽的分布關(guan) 係
ChatGPT輸出
# 方法1:散點圖 fig, axs = plt.subplots(2, 2, figsize=(10, 8)) axs[0, 0].scatter(iris_df['sepal length (cm)'], iris_df['target']) axs[0, 0].set_xlabel('sepal length (cm)') axs[0, 0].set_ylabel('target') axs[0, 1].scatter(iris_df['sepal width (cm)'], iris_df['target']) axs[0, 1].set_xlabel('sepal width (cm)') axs[0, 1].set_ylabel('target') axs[1, 0].scatter(iris_df['petal length (cm)'], iris_df['target']) axs[1, 0].set_xlabel('petal length (cm)') axs[1, 0].set_ylabel('target') axs[1, 1].scatter(iris_df['petal width (cm)'], iris_df['target']) axs[1, 1].set_xlabel('petal width (cm)') axs[1, 1].set_ylabel('target') plt.show()
# 方法2:箱線圖
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
axs[0, 0].boxplot(iris_df['sepal length (cm)'], vert=False)
axs[0, 0].set_xlabel('sepal length (cm)')
axs[0, 1].boxplot(iris_df['sepal width (cm)'], vert=False)
axs[0, 1].set_xlabel('sepal width (cm)')
axs[1, 0].boxplot(iris_df['petal length (cm)'], vert=False)
axs[1, 0].set_xlabel('petal length (cm)')
axs[1, 1].boxplot(iris_df['petal width (cm)'], vert=False)
axs[1, 1].set_xlabel('petal width (cm)')
plt.show()
# 方法3:直方圖
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
axs[0, 0].hist(iris_df['sepal length (cm)'], bins=20)
axs[0, 0].set_xlabel('sepal length (cm)')
axs[0, 0].set_ylabel('count')
axs[0, 1].hist(iris_df['sepal width (cm)'], bins=20)
axs[0, 1].set_xlabel('sepal width (cm)')
axs[0, 1].set_ylabel('count')
axs[1, 0].hist(iris_df['petal length (cm)'], bins=20)
axs[1, 0].set_xlabel('petal length (cm)')
axs[1, 0].set_ylabel('count')
axs[1, 1].hist(iris_df['petal width (cm)'], bins=20)
axs[1, 1].set_xlabel('petal width (cm)')
axs[1, 1].set_ylabel('count')
場景2:使用seaborn
魔法命令
數據表 iris_df 存在Pandas中,結構如下 - sepal length (cm), 類型 float64 - sepal width (cm), 類型 float64 - petal length (cm), 類型 float64 - petal width (cm), 類型 float64 - target, 類型 int64
寫(xie) 出Python代碼,寫(xie) seaborn中3種方法分析每列與(yu) 標簽的分布關(guan) 係
ChatGPT輸出
# 方法1:散點圖+氣泡圖 sns.scatterplot(x='sepal length (cm)', y='target', data=iris_df, hue='target', size='petal length (cm)', sizes=(20, 200)) plt.xlabel('sepal length (cm)') plt.ylabel('target') plt.show()
# 方法2:小提琴圖
sns.violinplot(x='target', y='sepal length (cm)', data=iris_df)
plt.xlabel('target')
plt.ylabel('sepal length (cm)')
plt.show()
# 方法3:直方圖+核密度圖
sns.histplot(data=iris_df, x="sepal length (cm)", hue="target", element="step", kde=True)
plt.xlabel('sepal length (cm)')
plt.show()
場景3:使用plotly
魔法命令
數據表 iris_df 存在Pandas中,結構如下 - sepal length (cm), 類型 float64 - sepal width (cm), 類型 float64 - petal length (cm), 類型 float64 - petal width (cm), 類型 float64 - target, 類型 int64
寫(xie) 出Python代碼,使用plotly中3種方法分析每列與(yu) 標簽的分布關(guan) 係
ChatGPT輸出
# 方法1: scatter plot fig1 = px.scatter(iris_df, x="sepal length (cm)", y="target", color="target") fig1.show()
# 方法2: histogram
fig5 = px.histogram(iris_df, x="sepal length (cm)", color="target")
fig5.show()
# 方法3: box plot
fig9 = px.box(iris_df, x="target", y="sepal length (cm)")
fig9.show()
其他指南
缺失值分析
數據表 iris_df 存在Pandas中,結構如下 - sepal length (cm), 類型 float64 - sepal width (cm), 類型 float64 - petal length (cm), 類型 float64 - petal width (cm), 類型 float64 - target, 類型 int64
寫(xie) 出Python代碼,使用plotly對數據集進行缺失值分析
探索性分析
數據表 iris_df 存在Pandas中,結構如下 - sepal length (cm), 類型 float64 - sepal width (cm), 類型 float64 - petal length (cm), 類型 float64 - petal width (cm), 類型 float64 - target, 類型 int64
寫(xie) 出Python代碼,使用plotly對數據集進行探索性分析
評論已經被關(guan) 閉。