在常见的数据挖掘中,dirty data的内容:
缺失值,异常值,不一致的值,重复的数据以及含有特殊符号(如#,*,等)
异常值往往十分的具有价值,重视异常值的出现,分析其产生的原因,常常成为发现问题而进而改进决策的契机
异常值分析:1st进行简单的统计量分析,最常用的是最大值,最小值,用来判断这个变量的取值是否超出了合理的选择
2sed:正态分布假设的3seigema???之外的小概率事件.3thd,识别异常值的一个标准,
这个在R数据分析中用的异常的多.....Python....下面来研究研究
数据特征分析:
分布分析:对于定量的数据,了解其分布形式是对称的还是非对称的,发现某些特大或特小的可疑值,可通过回执频率分布图,绘制频率分布直方图,绘制茎叶图进行直观的分析,对于定性的分类数据,可用饼图和条形图直观的显示数据
ps:其实也就是根据经验,靠着某种直觉来尝试的意思
so,拿到一个案例的时候要考虑将什么作为参数,反应什么问题,做啥子分析..
常用的库与函数:
扫描二维码关注公众号,回复:
4115201 查看本文章
matplotlib
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
也可以将plt.plot()函数传递多个序列,每两个序列是一个x,y向量对,在图中构成一条曲线
import matplotlib.pyplot as plt
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.axis([0,6,0,20])
想用红点表示这条曲线
'-' solid line style
'--' dashed line style
'-.' dash-dot line style
':' dotted line style
'.' point marker
',' pixel marker
'o' circle marker
'v' triangle_down marker
'^' triangle_up marker
'<' triangle_left marker
'>' triangle_right marker
'1' tri_down marker
'2' tri_up marker
'3' tri_left marker
'4' tri_right marker
's' square marker
'p' pentagon marker
'*' star marker
'h' hexagon1 marker
'H' hexagon2 marker
'+' plus marker
'x' x marker
'D' diamond marker
'd' thin_diamond marker
'|' vline marker
'_' hline marker
The following color abbreviations are supported:
character color
‘b’ blue
‘g’ green
‘r’ red
‘c’ cyan
‘m’ magenta
‘y’ yellow
‘k’ black
‘w’ white
#设置轴坐标,[xmin, xmax, ymin, ymax]
plt.axis([1,8,1,32])
控制线的属性
线有许多属性可以设置:线宽、线的形状,平滑等等。这里有一些设置线属性的方法:
使用关键字参数
plt.plot(x,y,linewidth=2.0)
对线对象(Line2D)使用set_方法,plot()会返回一个线对象的列表,比如line1, line2 = plot(x1, y1, x2, y2)。下面的代码我们将假设我们只有一条线,即返回的线对象列表的长度为1。
line, = plt.plot(x, y, '-')
line.set_antialiased(False) # 关闭平滑
使用setp()命令。 下面的例子使用的是MATLAB风格的命令去设置一个线的列表的多个属性。setp()可以作用于一个列表对象或者是一个单一的对象。你可以使用python风格的关键字参数或者是MATLAB风格的string/value对为参数:
lines = plt.plot(x1, y1, x2, y2)
# 使用关键字
plt.setp(lines, color='r', linewidth=2.0)
# 或者是MATLAB风格的string/value对
plt.setp(lines, 'color', 'r', 'linewidth', 2.0)
处理文本
text()命令可以用来在任意位置上添加文本,xlabel(),ylabel(),title()可以用来在X轴,Y轴,标题处添加文本。
plt.xlabel('Smarts')#xlabel设置横轴的名称
plt.ylabel('Probability')#设置纵轴的名称
plt.title('Histogram of IQ')#设置题目
plt.text(60, .025, r'$\mu=100,\ \sigma=15$')#设置在什么位置上还写啥
plt.axis([40, 160, 0, 0.03])
plt.grid(True)
plt.show()
图:
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
# 直方图
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75)
#注释
plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
arrowprops=dict(facecolor='black', shrink=0.05),
#纵坐标
import numpy as np
import matplotlib.pyplot as plt
# 在区间[0,1]制造一些数据
# np.random.normal为高斯分布
y = np.random.normal(loc=0.5, scale=0.4, size=1000)
y = y[(y > 0) & (y < 1)]
y.sort()
x = np.arange(len(y))
# 创建一个窗口
plt.figure(1)
# 线性
plt.subplot(221)
plt.plot(x, y)
plt.yscale('linear')
plt.title('linear')
plt.grid(True)
# 对数
plt.subplot(222)
plt.plot(x, y)
plt.yscale('log')
plt.title('log')
plt.grid(True)
# symmetric log
plt.subplot(223)
plt.plot(x, y - y.mean())
plt.yscale('symlog', linthreshy=0.05)
plt.title('symlog')
plt.grid(True)
# logit
plt.subplot(224)
plt.plot(x, y)
plt.yscale('logit')
plt.title('logit')
plt.grid(True)
plt.show()
绘制:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号
# 随机生成(10000,)服从正态分布的数据
data = np.random.randn(10000)
"""
绘制直方图
data:必选参数,绘图数据
bins:直方图的长条形数目,可选项,默认为10
normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
facecolor:长条形的颜色
edgecolor:长条形边框的颜色
alpha:透明度
"""
plt.hist(data, bins=40, normed=0, facecolor="blue", edgecolor="black", alpha=0.7)
# 显示横轴标签
plt.xlabel("区间")
# 显示纵轴标签
plt.ylabel("频数/频率")
# 显示图标题
plt.title("频数/频率分布直方图")
plt.show()
频率频数直方图是连续的,条形图是不连续的,只能表示分类的效果,在哪个明确的范围内
import matplotlib.pyplot as plt
import matplotlib
# 设置中文字体和负号正常显示
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False
label_list = ['2014', '2015', '2016', '2017'] # 横坐标刻度显示值
num_list1 = [20, 30, 15, 35] # 纵坐标值1
num_list2 = [15, 30, 40, 20] # 纵坐标值2
x = range(len(num_list1))
"""
绘制条形图
left:长条形中点横坐标
height:长条形高度
width:长条形宽度,默认值0.8
label:为后面设置legend准备
"""
rects1 = plt.bar(left=x, height=num_list1, width=0.4, alpha=0.8, color='red', label="一部门")
rects2 = plt.bar(left=[i + 0.4 for i in x], height=num_list2, width=0.4, color='green', label="二部门")
plt.ylim(0, 50) # y轴取值范围
plt.ylabel("数量")
"""
设置x轴刻度显示值
参数一:中点坐标
参数二:显示值
"""
plt.xticks([index + 0.2 for index in x], label_list)
plt.xlabel("年份")
plt.title("某某公司")
plt.legend() # 设置题注
# 编辑文本
for rect in rects1:
height = rect.get_height()
plt.text(rect.get_x() + rect.get_width() / 2, height+1, str(height), ha="center", va="bottom")
for rect in rects2:
height = rect.get_height()
plt.text(rect.get_x() + rect.get_width() / 2, height+1, str(height), ha="center", va="bottom")
plt.show()
#plt.axes().get_xaxis().set_visible(False)隐藏坐标轴
#设置窗口的尺寸
plt.figure(figsize=(10,6))
plt.figure(dpi=128,figsize(10,6))dpi向figure传递分辨率....