如何使用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()

箱线图描述一列数据中,数据分布情况。

以上就是这部分的内容,实际工作中大家遇到的欢迎继续补充。


分享到:


相關文章: