Python data science one

在常见的数据挖掘中,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传递分辨率.... 

猜你喜欢

转载自blog.csdn.net/qq_37312720/article/details/83998711