python kaggle資料分析實戰

2021-10-08 02:03:16 字數 3875 閱讀 7829

三.資料處理

首先新增python中常用的資料分析庫

import numpy as np 

import pandas as pd

import os

import matplotlib.pyplot as plt

import plotly as py

import plotly.graph_objs as go

設定預設路徑,開啟文件檔案,觀察資料。

os.chdir(r'c:\users\administrator\desktop\jianli\python'

)#修改路徑

df = pd.read_csv(

'data.csv'

)#讀取檔案

df.head(

)#展示資料

接下來檢視資料的整體情況:

df.info(

)#檢視資料有效值

其中可以看到 description和customerid資料量與其他不同,存在缺失值。我們自定義函式,計算一下缺失率。

df.

(lambda x :

sum(x.isnull())

/len

(x))

#缺失率

其中customerid:使用者id資料缺失較多。另外檢視一下退貨資料存在多少

len

(df[df[

'invoiceno'].

str[0]

=='c'])

/len

(df)

#退貨資料

接下來進行資料清洗的內容,首先去除存在空值的數:

df1 = df.dropna(how =

'any'

).copy(

)#copy 防止修改df1時修改了原始資料

copy()函式是為了防止當我們操作df1時改變原始資料。如果存在疑問可以搜尋一下python中關於深拷貝和淺拷貝。

另外,我們需要對日期進行格式化,去除掉時分秒。

df1[

'invoicedate'

]= pd.to_datetime(df1[

'invoicedate'

],errors =

'coerce'

)#格式化日期

df1[

'price'

]= df1.

(lambda x: x[3]

*x[5

],axis =1)

# 單價乘以銷售量

利用groupby函式對其進行分組統計並排序獲取銷售量前十的國家:

df2 = df1[df[

'quantity'

]>0]

.groupby(

'country').

sum()[

'quantity'].\

sort_values(ascending =

false

).head(10)

#銷售量前10國家

df2

視覺化:

trace_basic =

[go.bar(x = df2.index.tolist(

),y = df2.values.tolist(),\

marker =

dict

(color=

'orange'

),opacity =.5)

]#傳入資料

layout = go.layout(title =

'購買商品前10的國家'

,xaxis =

dict

(title =

'國家'))

#布局figure_basic = go.figure(data = trace_basic, layout = layout )

同樣的**我們可以獲取到交易額前十的國家

trace_basic =

[go.bar(x = df3.index.tolist(

),y = df3.values.tolist(),\

marker =

dict

(color=

'orange'

),opacity =.5)

]#傳入資料

layout = go.layout(title =

'消費金額前10的國家'

,xaxis =

dict

(title =

'國家'

),yaxis =

dict

(title =

'消費金額'))

#布局figure_basic = go.figure(data = trace_basic, layout = layout )

哪個月份銷量最佳,我們需要對日期進行處理,獲取月份資訊:

df1[

'month'

]= pd.to_datetime(df1[

'invoicedate'

],errors=

'coerce'

).dt.month

df4 = df1[df[

'quantity'

]>0]

.groupby(

'month').

sum()[

'quantity'

]df4

trace_basic =

[go.bar(x = df4.index.tolist(

),y = df4.values.tolist(),\

marker =

dict

(color=

'orange'

),opacity =.5)

]#傳入資料

layout = go.layout(title =

'月份銷售額'

,xaxis =

dict

(title =

'月份'

),yaxis =

dict

(title =

'銷量'))

#布局figure_basic = go.figure(data = trace_basic, layout = layout )

py.offline.plot(figure_basic,filename =

'fth.html'

)

後續兩個問題再補充- -

python kaggle比賽資料收集

需要在兩天之類解決乙個糖尿病 問題,所以需要直接上手打kaggle比賽的一些經驗!用python參加kaggle的些許經驗總結 getting started with python getting started with python ii getting started with random...

thinkphp 資料分表

對於大資料量的應用,經常會對資料進行分表,有些情況是可以利用資料庫的分割槽功能,但並不是所有的資料庫或者版本都支援,因此我們可以利用thinkphp內建的資料分表功能來實現。幫助我們更方便的進行資料的分表和讀取操作。和資料庫分割槽功能不同,內建的資料分表功能需要根據分表規則手動建立相應的資料表。在需...

openvswich sflow監控資料分析

這篇部落格的任務是如何獲得一組虛擬機器伺服器的通訊矩陣,及任意兩台虛擬機器在一段時間的通訊量。如標題所示,是基於openvswitch sflow環境的,關於openvswitch和sflow在前幾篇部落格已經介紹了,這裡不再贅述。sflowtool提供了乙個awk指令碼,這個指令碼的任務是獲得任意...