如何使用python高效進行數據分析及可視化

使用python高效快速進行數據清洗及可視化

對於剛剛接觸python的人來說,第一次使用pandas和matplotlib處理數據,主要應該注意以下幾個方面:

如何使用python高效進行數據分析及可視化


首先第一步就是要導入一些使用包:

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

要把csv或者excel文件讀取出來:

pa = pd.read_csv('E:/練習數據/patient.csv')

這裡需要注意,我們直接複製出來的文件路徑格式一般都是 \ ,這裡我們要轉換成 / ;

2 、由於我的文件列數過多,所以在notebook中顯示不完全,如果要顯示所有列,那就需要在開頭進行一些設置

pd.set_option('display.max_columns',None)

主要用到的就是set_option方法,具體用法可以參考其他文章;

3、之後就進入到了數據清理階段:首先刪除不需要的列

pa.drop(['病人卡號','病人姓名','省份','城市','諮詢醫生','類型','type_message'], axis=1, inplace=True)

這裡使用drop方法,參數方面axis默認為0,是刪除行,置為1是刪除列,inplace參數表示是否需要把處理之後的數據替換掉原來的數據;另外一種刪除方法是刪除連續的多列:

pa.drop(pa.columns[8:30],axis=1,inplace=True)

這裡使用了索引,表示刪除第8到30列;

幾列拿出來求和,得到新的列在加入的表中,這種使用場景比如說計算每個學生各科的總分:

sum_columns = pa.iloc[:,8:30]deff(x):return x.sum()feiyong = sum_columns.apply(f,axis=1)pa['總費用'] = feiyong

這部分牽涉到的知識點:iloc的使用、apply函數的使用、還有如何增加一列新的數值到表中,算是稍微複雜點的應用了;

數值的替換都可以用replace:

pa = pa.replace(['初診','複診'],[1,0])pa = pa.replace(['自然門診'],['企劃'])

更改列名要用到rename:

pa.rename(columns={'諮詢人員':'醫生'},inplace=True)

裡面要傳入columns和inplace作為參數;

還有一個重要的知識點就是把一列分成兩列,再添加到表中

bingzhong = pa.病種.str.split('-',expand=True)

bingzhong.columns = ['大病種','小病種'] #數據清洗 添加兩列到原來的表中

pa = pa.join(bingzhong)

這裡用到的是str.split,裡面兩個參數,第一個是使用什麼符號來分裂,這個符號必須是每一個數據都包含的,之後要給兩個新的列添加列名,之後使用join把新的Dataframe添加到原來的表中。

分組統計:

zhuzhuang = pa.groupby(by=['醫院'])['總費用'].sum().sort_values(ascending=False)

cz1 = pa.groupby(by=['醫院'])['初複診','總費用'].sum() #統計兩列

使用groupyby裡面要傳入by參數,後面可以做統計,然後排序,這個參數後來會成為Series中的index,如果要把得到的Series轉化成Dataframe可以使用下面這個函數

cz1 = cz1.reset_index() #把groupy之後生成的series變成dataframe

對某一列的值進行加減乘除運算

cz1['總費用']=cz1['總費用']/10000

使用round設置保存幾位小數

cz1 = cz1.round({'總費用':0}) #對某一列保留幾位小數

數據篩選

cz2 = cz1[(cz1.初複診>100)&(cz1.總費用>1)]

數據可視化

折線圖

zhexian.plot(figsize=(12,6))plt.xticks(fontsize=10)plt.xlabel('Datatime')plt.ylabel('Money')plt.title('moneyof datatime')plt.show()

直接使用.plot,默認就是折線圖,figsize參數可以指定畫出的圖片大小,xticks主要設置座標軸的顯示,比如說字號,xlabel,ylabel,title分別設置標題;

柱狀圖

zhuzhuang.plot(kind='bar',figsize=(15,8))plt.xticks(rotation=45,fontsize=15)plt.yticks(fontsize=14)plt.show()

除了figsize參數之外還傳進去一個kind表示圖像的類型‘bar’表示柱狀圖,

散點圖

fig, ax = plt.subplots()ax.scatter(cz2['初複診'],cz2['總費用'])ax.set_xlabel('nums')ax.set_ylabel('money')ax.set_title('Hahahha Wocao')plt.show()

這裡使用一個新的畫圖方法ax,散點圖要傳進去兩列數值,來描述兩列的關係,設置圖名稱的方式也和之前有所不同

箱線圖

fig, ax = plt.subplots()ax.boxplot(cz2['總費用'])plt.show()

箱線圖描述一列數據中,數據分佈情況。

以上就是這部分的內容,實際工作中大家遇到的歡迎繼續補充。


分享到:


相關文章: