数据挖掘 之 数据可视化与基础数据分析方法

相关库:numpy、panda、matplotlib

    • 一些基础方法

1.1绘制函数图

plt.plot(x, y, format_string, **kwargs) 
  • x:x轴数据,列表或数组,可选

  • y:y轴数据,列表或数组

  • format_string:控制曲线的格式字符串,可选,由颜色字符、风格字符和标记字符组成。

颜色字符

说明

颜色字符

说明

‘b’

蓝色

‘m’

洋红色

‘g’

绿色

‘y’

黄色

‘r’

红色

‘k’

黑色

‘c’

青绿色 cyan

‘w’

白色

‘#008000’

RGB某颜色

‘0.8’

灰度值字符串

风格字符

说明

‘-‘

实线

‘–’

破折线

‘-.’

点划线

‘:’

虚线

’ ’ ’ ‘

无线条

标记字符

说明

标记字符

说明

‘.’

点标记

‘1’

下花三角标记

‘,’

像素标记(极小点)

‘2’

上花三角标记

‘o’

实心圈标记

‘3’

左花三角标记

‘v’

倒三角标记

‘4’

右花三角标记

‘^’

上三角标记

’s’

实心方形标记

‘>’

右三角标记

‘p’

实心五角标记

‘<’

左三角标记

‘*’

星形标记

‘h’

竖六边形标记

‘d’

瘦菱形标记

‘H’

横六边形标记

‘|’

垂直线标记

‘+’

十字标记

‘D’

菱形标记

‘x’

x标记

**kwargs:第二组或更多,(x,y,format_string)
常用的参数:
color:控制颜色,color=’green’
linestyle:线条风格,linestyle=’dashed’
marker:标记风格,marker = ‘o’
markerfacecolor:标记颜色,markerfacecolor = ‘blue’
markersize:标记尺寸,markersize = ‘20’
数据挖掘 之 数据可视化与基础数据分析方法_第1张图片
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.figure(figsize=(4,2))


x = np.linspace(0, 2*np.pi, 50)
print(x)#均分计算指令
y = np.sin(x)
plt.plot(x,y,'bp--')
plt.show()

1.2绘制饼状图

import matplotlib.pyplot as plt
plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1,
 startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=0, 0, frame=False, 
 rotatelabels=False, *, normalize=None, data=None)

x: 即每个扇形的占比的序列或数组
explode:如果不是None,则是一个len(x)长度的数组,指定每一块的突出程度;突出显示,设置每一块分割出来的间隙大小
labels:为每个扇形提供标签的字符串序列
colors:为每个扇形提供颜色的字符串序列
autopct:如果它是一个格式字符串,标签将是fmt % pct。如果它是一个函数,它将被调用。
shadow:阴影
startangle:从x轴逆时针旋转,饼的旋转角度
pctdistance, default: 0.6每个饼片的中心与由autopct生成的文本的开头之间距离与半径的比率,大于1的话会显示在圆外
labeldistance, default 1.1饼状图标签绘制时的径向距离(我认为这个也与8类似是个比率)。如果设置为None,则不绘制标签,而是存储在图例()中使用。
数据挖掘 之 数据可视化与基础数据分析方法_第2张图片
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']
task = ["高数上下复习(15h)","英语每日指标(14h)","最优化(5h)","数据挖掘实验(15h)","考研择校(4h)","数学建模规划(5h)","jupyter学习(5h)"]
time = np.array([15,14,5,15,4,5,5])
totaltime = sum(time)

plt.pie(x=time,labels=task,
        autopct='%1.1f%%', #*饼图上标注百分比
        shadow=False,  #*是否有阴影
        startangle=0  #*逆时针旋转角度
        )
# plt.axis('equal')  # 显示为圆(避免比例压缩为椭圆)
plt.show()

1.3绘制直方图(分箱)

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype=’bar’, align=’mid’, orientation=’vertical’, rwidth=None, log=False, color=None, label=None, stacked=False, \*, data=None, \*\*kwargs)
参数:此方法接受以下描述的参数:
x:此参数是数据序列。
bins:此参数是可选参数,它包含整数,序列或字符串。
range:此参数是可选参数,它是箱子的上下限。
density:此参数是可选参数,它包含布尔值。
weights:此参数是可选参数,并且是一个权重数组,与x的形状相同。
bottom:此参数是每个容器底部基线的位置。
histtype:此参数是可选参数,用于绘制直方图的类型。 {‘bar’,‘barstacked’,‘step’,‘stepfilled’}
align:此参数是可选参数,它控制如何绘制直方图。 {‘left’,‘mid’,‘right’}
rwidth:此参数是可选参数,它是条形图的相对宽度,是箱宽度的一部分
log:此参数是可选参数,用于将直方图轴设置为对数刻度
color:此参数是一个可选参数,它是一个颜色规格或一系列颜色规格,每个数据集一个。
label:此参数是可选参数,它是一个字符串或匹配多个数据集的字符串序列。
normed:此参数是可选参数,包含布尔值,而是使用density关键字参数。
数据挖掘 之 数据可视化与基础数据分析方法_第3张图片
数据挖掘 之 数据可视化与基础数据分析方法_第4张图片

import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
plt.hist(x,10)
plt.show()

2d直方图:4.6Python数据处理篇之Matplotlib系列(六)---plt.hist()与plt.hist2d()直方图 - 简书 (jianshu.com)

含曲线拟合:(138条消息) [391]matplotlib.pyplot中的hist函数_周小董的博客-CSDN博客_ax.hist

含堆叠式:(138条消息) matplotlib.pyplot.hist参数详解_TravelingHat的博客-CSDN博客_matplotlib.pyplot.hist

1.4绘制箱型图(胡须图)

数据挖掘 之 数据可视化与基础数据分析方法_第5张图片
df.plot.box(title="title")  # 箱型图
数据挖掘 之 数据可视化与基础数据分析方法_第6张图片
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data = [1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100,4000,5000]

df = pd.DataFrame(data)
df.plot.box(title="title")  # 箱型图
plt.grid(linestyle="--", alpha=0.3)  # 显示网格线
plt.show()

绘制多个箱型图及简便用法:Python pandas.DataFrame.plot.box用法及代码示例 - 纯净天空 (vimsky.com)

1.5贡献度分析(帕累托分析)

给出产品的销售额,按照大到小排序,绘制积分变换曲线(由0->1递增,且斜率逐渐变小)

p.plot(color='r', secondary_y=True, style='-o', linewidth=2)
# secondary_y = True:设置第二纵坐标

plt.annotate(format(p[6], '.4%'),  # 文字内容
             xy=(6, p[6]),  # 点标注的位置
             xytext=(6*0.9, p[6]*0.9),   # 文字标记的位置
             arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
数据挖掘 之 数据可视化与基础数据分析方法_第7张图片
import pandas as pd
import matplotlib.pyplot as plt
import xlrd

# xlrd是读excel,xlwt是写excel的库
dish_profit = r'E:\data\catering_dish_profit.xls'
# 读取数据(设置主键为菜品名)、显示的时候自动设置横轴中文标记
data = pd.read_excel(dish_profit, index_col='菜品名')
print(data)

data = data['盈利'].copy()  # 复制一份
print(data)
data= data.sort_values(ascending=False)
data.plot(kind='bar')   # 绘制柱状图

p = 1.0*data.cumsum()/data.sum()    # data.cumsum():求积分 Σ0,Σ1,Σ2,Σ3……
p.plot(color='r', secondary_y=True, style='-o', linewidth=2)
# secondary_y = True:设置第二纵坐标

# 标记特殊点!详细教程:https://blog.csdn.net/TeFuirnever/article/details/88946088
plt.annotate(format(p[6], '.4%'),  # 文字内容
             xy=(6, p[6]),  # 点标注的位置
             xytext=(6*0.9, p[6]*0.9),   # 文字标记的位置
             arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))   # arrowprops #箭头参数,参数类型为字典dict


plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.ylabel('盈利(元)')
plt.show()

(139条消息) plt.annotate()函数解析(最清晰的解释)_我是管小亮的博客-CSDN博客_plt.annotate(s=r's\hat{y}=29.40+1.55*$'+'广告费支出', x

1.6周期性分析

数据挖掘 之 数据可视化与基础数据分析方法_第8张图片
数据挖掘 之 数据可视化与基础数据分析方法_第9张图片
import pandas as pd
import matplotlib.pyplot as plt
df_normal = pd.read_csv(r"E:\data\user.csv")
print(df_normal)

plt.figure(figsize=(8,4))
plt.plot(df_normal["Date"],df_normal["Eletricity"])
plt.xlabel("日期")
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()

ax.xaxis.set_major_locator(x_major_locator)
plt.ylabel("每日电量")
plt.title("正常用户电量趋势")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()


df_steal = pd.read_csv(r'E:\data\Steal user.csv')
plt.figure(figsize=(10,9))
plt.plot(df_steal["Date"],df_steal["Eletricity"])
plt.xlabel("日期")
plt.ylabel("日期")

# (解决横轴单位间隔太小)自定义刻度间隔:
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)

plt.title("窃电用户电量趋势")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()

2.库的学习

你可能感兴趣的:(数据挖掘,信息可视化,数据挖掘,数据分析)