天天看點

python dataframe删除某一列_怎樣用Python進行資料分析

本文總結了猴子Live課程:怎樣用Python進行資料分析,主講内容包括Numpy和Pandas。

一、一維資料分析

一維資料分析,可以使用Numpy中Array,也可以使用Pandas中的Series,Series的功能會更多些。

python dataframe删除某一列_怎樣用Python進行資料分析
Numpy一維數組的使用:
python dataframe删除某一列_怎樣用Python進行資料分析

Numpy一維數組與Python清單的差別?--Numpy具有統計功能、向量化計算,Numpy數組中的資料類型必須是一緻的,Python清單可以存儲不同的資料類型。

Pandas一維數組的使用:

Pandas的Series可以建立索引,可以使用describe擷取描述性統計資訊

python dataframe删除某一列_怎樣用Python進行資料分析

Pandas的Series擷取資料有兩種方式,iloc根據元素位置擷取值,loc根據索引擷取值

python dataframe删除某一列_怎樣用Python進行資料分析

Pandas - Series支援向量相加,可以使用+号和add,add支援缺失值填充

python dataframe删除某一列_怎樣用Python進行資料分析

二、二維資料分析

Numpy中通過Array建立二維數組,Pandas中通過DataFrame建立二維數組,資料框DataFrame更加廣泛。

Numpy二維數組:

如何定義二維數組、3種擷取元素的情況

python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析

Numpy數軸參數,指定按照某一行或者某一列進行計算

python dataframe删除某一列_怎樣用Python進行資料分析
DataFrame二維數組:

DataFrame相對于Numpy二維數組的優勢:

  • DataFrame每一列可以是不同的資料類型
  • DataFrame每一行每一列都有一個索引值,很容易存儲常見的表格資料

DataFrame 的建立和使用,學會使用iloc按照位置查詢資料,loc按照索引查詢資料,通過清單查詢某幾列資料,通過切片查詢資料,以及通過條件判斷篩選資料。

python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析

DataFrame:資料集描述性統計資訊

python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析

三、通過案例學習資料分析步驟

資料分析步驟:提出問題、了解資料、資料清洗、構模組化型、資料可視化

提出問題:一切的資料分析都是為了解決我們工作或生活中的問題,明确的問題為我們後面的資料分析提供了一個大的目标。

了解資料:根據我們的問題采集資料,将資料導入到資料框中,檢視資料集的資訊,從整體上了解資料。

資料清洗:對資料進行清洗,很多資料并不符合我們的标準。

構模組化型:簡單的分析是得到某些業務的名額,複雜的分析需要用到機器學習的算法。

資料可視化:與他人交流自己的資料結果,最好的方式就是使用圖表。

案例過程:

1. 提出問題:某醫院銷售資料,需要擷取月均消費次數、月均消費金額、客單價、消費趨勢

了解每個業務名額的含義,實際項目中,前期我們需要和業務人員一起讨論明确他們的需求,各個名額的計算公式

2. 了解資料

#1.讀取Excel資料(統一按str讀入,之後轉換)
fileNameStr='./醫院銷售資料.xlsx'
xls=pd.ExcelFile(fileNameStr, dtype='object')
salesDf=xls.parse('Sheet1',dtype='object')
#2.列印前幾行
salesDf.head()
#3.檢視有多少行多少列
salesDf.shape()
#4.檢視列的資料類型
salesDf.dtypes
           

3. 資料清洗

資料清洗步驟:

  • 選擇子集
  • 列名重命名
  • 缺失資料處理
  • 資料類型轉換
  • 資料排序
  • 異常值處理
#1.選擇子集
subSalesDf=salesDf.loc[0:4,'購藥時間':'銷售資料']
#2.列名重命名
colNameDict=['購藥時間':'銷售時間']
subSalesDf.rename(columns=colNameDict,inplace=True)
#3.缺失資料處理,删除指定列中為空的行,
#how='any'在給定的任何一列中有缺失值就删除
subSalesDf.dropna(subset=['銷售時間','社保卡号'],how='any']
#4.資料類型轉換,字元串轉化為數值
subSalesDf['銷售數量']=subSalesDf['銷售數量'].astype('float')
subSalesDf['應收金額']=subSalesDf['應收金額'].astype('float')
subSalesDf['實收金額']=subSalesDf['實收金額'].astype('float')
#處理日期,字元串分割split,定義一個分割日期的函數
'''
定義函數:分割銷售時間,擷取銷售日期
輸入:timeSereis銷售時間這一列,是個Series資料類型
輸出:分割後的時間,傳回也是個Sereis資料類型
'''
def splitSaletime(timeSeries): 
     timeList=[]
     for value in timeSeries:
    #分割字元串,擷取銷售日期
          dateStr=value.split('')[0]
           timeList.append(dateStr)
     #将清單轉行為一維資料Series類型
     timeSeries=pd.Sereis(timeList)
     return timeSeries
#擷取銷售時間這一列,對字元串進行分割擷取銷售日期
timeSeries=subSalesDf.loc[:,'銷售時間']
dateSeries=splitSaletime(timeSeries)
#修改銷售時間這一列的值
subSalesDf.loc[:,'銷售時間']=dateSeries
#字元串轉日期
subSalesDf.loc[:,'銷售時間']=pd.to_datetime(subSalesDf.loc[:,'銷售時間'],format='%Y-%m-%d',errors='coerce')
#轉化日期過程中不符合日期格式的數值會被轉化為控制None,删除為空的行
subSalesDf.dropna(subset=['銷售時間'],how='any']
#5.資料排序,按銷售日期進行升序排序
subSalesDf=subSalesDf.sortvalues(by='銷售時間',ascending=True)
#重命名行名(index)
subSalesDf=subSalesDf.reset_index(drop=True)
#6.異常值處理
#每一列的描述性統計資訊
subSalesDf.describe()
#删除異常值:通過條件判斷篩選出資料
#查詢條件
querySeries=subSalesDf.loc[:,'銷售資料']>0
#應用查詢條件
subSalesDf=subSalesDf.loc[querySeries,:]
           

4. 構模組化型

python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析
python dataframe删除某一列_怎樣用Python進行資料分析