python 数据可视化

数据可视化

# -*- coding:utf-8 -*-
# 异常值处理
import pandas as pda
import numpy as npy
import matplotlib

matplotlib.use('Agg')
import matplotlib.pyplot as pyl
import io


def index(data):
# 输出结果必须为字典output
output = {}
# data = pda.read_excel("D:/taobao2.xls")
data = pda.DataFrame(data[1:], columns=data[0])
# print(data)
data.describe()
# 画散点图(横轴为价格,纵轴为评论数)
# 得到价格
data2 = data.T
price = data2.values[2]
# 得到评论数据
comt = data2.values[3]
fig = pyl.figure()
# print(price)
# print(comt)
pyl.plot(price, comt, 'o')
canvas = fig.canvas
buffer = io.BytesIO()
canvas.print_png(buffer)
img_spl = buffer.getvalue()
# print(data)s
buffer.close()
output['img_散点图'] = img_spl
# pyl.show()
# 评论数异常>100000,价格异常>1000
line = len(data.values)
col = len(data.values[0])
da = data.values
for i in range(0, line):
for j in range(0, col):
if (int(da[i][2]) > 1000):
# print(da[i])
da[i][2] = data["价格"].mean()
if (int(da[i][3]) > 100000):
# print(da[i])
da[i][3] = data["评论"].mean()
daF = pda.DataFrame(da)
daF.sort_values(by=3)
da2 = da.T
price = da2[2]
comt = da2[3]
fig2 = pyl.figure()
pyl.plot(price, comt, 'o')
canvas = fig2.canvas
buffer = io.BytesIO()
canvas.print_png(buffer)
img_spl2 = buffer.getvalue()
# print(data)s
buffer.close()
output['img_第二张散点图'] = img_spl2

# pyl.show()

# 分布分析--直方图
fre_price = dict()
for num in da2[2]:
fre_price[num] = fre_price.get(num, 0) + 1
fre_price.keys()
fre_price.values()
pyl.bar(list(fre_price.keys()), list(fre_price.values()))

# 数据集成
da200 = da[0:200]
da300 = da[200:500]
da500 = npy.concatenate((da200, da300))
pda.DataFrame(da200)
output['data_数据集成'] = pda.DataFrame(da200).values.tolist()
# print(pda.DataFrame(da200))

# 标准化
# 离差标准化
data["价格"] = (data["价格"] - data["价格"].min()) / (data["价格"].max() - data["价格"].min())
# 标准差标准化
data["价格"] = (data["价格"] - data["价格"].mean()) / data["价格"].std()
print(output)
return output


if __name__ == "__main__":
data = nosupervision_read_data()
index(data)

  

原文地址:https://www.cnblogs.com/wei23/p/10890685.html