获取inout框中未改变值的数据_数据分析10——数据分析的基本过程(02)
解決常見問題:
數(shù)據(jù)分析過程分為以下步驟:
(1)提出問題:數(shù)據(jù)分析首先要有個明確的問題。是所有數(shù)據(jù)分析開始的第一步。
(2)理解數(shù)據(jù):采集數(shù)據(jù)(根據(jù)定義的問題來采集數(shù)據(jù))、導(dǎo)入數(shù)據(jù)(excel、sql)譬如,讀取excel到python二維框中、了解數(shù)據(jù)
(3)對數(shù)據(jù)進(jìn)行清洗(對數(shù)據(jù)進(jìn)行預(yù)處理)
(4)構(gòu)建模型(對清洗后的數(shù)據(jù)進(jìn)行數(shù)據(jù)分析,得出業(yè)務(wù)指標(biāo),復(fù)雜的要用機(jī)器模型的訓(xùn)練)
(5)數(shù)據(jù)可視化(與他人交流你的展示結(jié)果)
例:朝陽醫(yī)院 銷售數(shù)據(jù)
希望知道如下幾個指標(biāo):月均消費(fèi)次數(shù)、月均消費(fèi)金額、客單價、消費(fèi)趨勢。首先自己必須搞清楚各個指標(biāo)代表什么。和業(yè)務(wù)部門討論清楚。
打印出前幾行,以保證數(shù)據(jù)正確讀取了,也了解有哪些列以及他們的特點(diǎn)。
用descript方法來看數(shù)據(jù)的基本信息。
2. 數(shù)據(jù)清洗步驟
(1)選擇子集;使用切片的冒號,使用loc屬性可以獲取指定范圍
好多列,那么有時候我們只需要幾列;
(2)列名重命名;首先建立一個舊新列名的對應(yīng)關(guān)系,然后用rename方法來重命名,參數(shù)inplace,true:表示會改變數(shù)據(jù)框本身,false:會復(fù)制一個新的數(shù)據(jù)框出來,改變他的列名。
如果列名不方便數(shù)據(jù)分析,那么我們要對列名進(jìn)行重命名
(3)缺失數(shù)據(jù)處理;記錄缺失錯誤,直接刪除缺失數(shù)據(jù),如果缺失值太多,那么我們可以通過建立模型的方式來補(bǔ)充這些數(shù)據(jù)。不能有缺失值的列,可以用dropna來刪除空數(shù)據(jù),參數(shù)subset用于存放刪除指定列的列表,第二個參數(shù)how,用于指定如何刪除數(shù)據(jù),how="any"表示任何一列有缺失值,都直接刪除。可以看前后數(shù)據(jù),saleDf.shape,行數(shù)差了多少。
(4)數(shù)據(jù)類型轉(zhuǎn)換,字符串類型轉(zhuǎn)換為數(shù)字類型。.astype('float');,例如日期只需要日期,不需要星期幾,那么用.split分割字符串就可以。定義函數(shù),可以將一列數(shù)據(jù)的每行數(shù)據(jù)都處理。字符串轉(zhuǎn)換為日期類型,pd.to_datetime(列,格式,errors='coerce');如果不符合格式,會被轉(zhuǎn)化為空值。因?yàn)槿掌诓缓侠?#xff0c;會被置空,所以要執(zhí)行一遍缺失處理數(shù)據(jù)。
(5)數(shù)據(jù)排序;按指定列名排序,默認(rèn)排序算法快排序。by=列名,ascending=true:降序;false:生序。重命名行號,df.reset_index()
(6)異常值處理,有些數(shù)據(jù)超出了范圍;用df.describe()來獲取整體數(shù)據(jù)。使用條件判斷,篩選出 銷售數(shù)量>0的數(shù)據(jù)。
3. 分析數(shù)據(jù)
1??月均消費(fèi)次數(shù) = 總消費(fèi)次數(shù) / 月份數(shù)。
同一天內(nèi)、同一個人,發(fā)生的所有消費(fèi)算作一次消費(fèi)。但發(fā)生在同一天的,雖然有兩次消費(fèi),但也算1次數(shù)據(jù)。
所以要根據(jù)日期和社保卡號來去重。只保留一條。
kpi1_df=df.drop_duplicates(subset=['銷售時間','社保卡號']); // 刪除重復(fù)數(shù)據(jù)
totalI = kpi1_df.shape[0]; // 有多少行,即總消費(fèi)次數(shù)
(1)排序,df.sort_values(by='消費(fèi)時間',ascending=true) // 按銷售時間生序排序
kpi1df = kpi1df.reset_index(drop=true) // 重命名行名 index
(2)獲取時間范圍:第一行是最小時間,第二行是最大時間
(3)計(jì)算月份數(shù),(結(jié)束時間-開始時間).days得出天數(shù)。 /30得出一共幾個月。
總消費(fèi)次數(shù)/月份數(shù)=月均消費(fèi)次數(shù)。
2??月均消費(fèi)金額 = 總消費(fèi)金額/月份數(shù)
totalMoneyF = df.loc[:,'實(shí)收金額'].sum();
monthMoneyF = totalMoneyF / monthsI;
3??客單價 = 總消費(fèi)金額/總消費(fèi)次數(shù)
4??趨勢分析,之后再來。
距離上篇文章,已經(jīng)過去9個月了。重新拾起來。
2019.2.28(12:29)
總結(jié)
以上是生活随笔為你收集整理的获取inout框中未改变值的数据_数据分析10——数据分析的基本过程(02)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 4j 设置日志保存天数_MySQL中的这
- 下一篇: exists hive中如何使用_HIV
