用Plotily处理数据的基本操作
import pandas as pd # 导入数据.scv df = pd.read_csv(" .csv") # 查看前五行数据 df.head() # 查看一下数据描述 df.descirbe() # 查看一下数据的形状 df.shape # 查看一下数据集中都包含哪些列 df.columns # 对数据进行可视化 import matplotlib.pyplot as plt import seaborn as sns # 使用Jupyter Notebook # import warnings # warnings.filterwarnings("ignore") # %matplotlib inline # 创建自定义图像 figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True) # 标题 plt.title(" ") # 画出数据分布图 sns.displot(df[" "]) # !pip install plotly # 安装Plotily库 # 导入绘图工具库 import plotly.offline as offline import plotly.graph_objs as go import plotly.offline as py from plotly.offline import init_notebook_mode, iplot init_notebook_mode(connected=True) offline.init_notebook_mode() # 查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值 temp = df[" "].value_counts() # 画出柱状图,查看不同值所占比重 trace = [go.Bar(x = temp.index, y = (temp / temp.sum()) * 100)] # 设置图的字体颜色等 layout = go.Layout( title=" ", xaxis=dict(title=' ', tickfont=dict(size= , color='rgb( , , )')), yaxis=dict(title=' ', titlefont=dict(size= , color='rgb( , , )'), tickfont=dict(size= , color='rgb( , , )')) ) # 显示图形 fig = go.Figure(data=trace, layout=layout) iplot(fig, filename=' ') # 画出饼状图 trace = [go.Pie(labels=temp.index, values=temp.values)] # 设置图题 layout = go.Layout( title=' ', ) # 显示图形 fig = go.Figure(data=trace, layout=layout) iplot(fig) # 画出饼状图,圆环型 trace = [go.Pie(labels=temp.index, values=temp.values, hole=0.6)] temp1 = df["FLAG_OWN_CAR"].value_counts() temp2 = df["FLAG_OWN_REALTY"].value_counts() # 画出两个饼状图 trace = [go.Pie(labels=temp1.index, values=temp1.values, domain={"x": [0, .48]}, hole=0.6), go.Pie(labels=temp2.index, values=temp2.values, domain={"x": [0.5, 1]}, hole=0.6)] # 设置图中的字体,图题等 layout = go.Layout( title=' ', annotations=[{"font": { "size": }, "showarrow": , "text": " ", "x": 0. , # 坐标 "y": 0. }, {"font": { "size": }, "showarrow": , "text": " ", "x": 0. , "y": 0. }]) # 显示图形 fig = go.Figure(data=trace, layout=layout) iplot(fig) # 计数方法 temp_y0 = [] temp_y1 = [] for val in temp.index: temp_y1.append(np.sum(df["TARGET"][df["TYPE"] == val] == 1)) temp_y0.append(np.sum(df["TARGET"][df["TYPE"] == val] == 0)) temp_y1 = np.array(temp_y1) temp_y0 = np.array(temp_y0) # 删除掉存在缺失值的特征列 df_drop = df.dropna(axis=1) df_drop.head() # 将其编码成为数值形式 from sklearn import preprocessing # 取出非数值的列 categorical_feats = [ f for f in df_drop.columns if df_drop[f].dtype == 'object' ] # 对非数值的列进行编码 for col in categorical_feats: lb = preprocessing.LabelEncoder() lb.fit(list(df_drop[col].values.astype('str'))) df_drop[col] = lb.transform(list(df_drop[col].values.astype('str'))) df_drop.head() # 划分数据 # 删除ID df_drop1 = df_drop.drop("ID", axis=1) # 提取训练特征数据和目标值 data_X = df_drop1.drop(" ", axis=1) data_y = df_drop1[' '] #划分数据集为训练数据集和测试数据集 from sklearn import model_selection train_x, test_x, train_y, test_y = model_selection.train_test_split(data_X.values, data_y.values, test_size=0.8, random_state=0) # 构建预测模型 from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier() # 构建模型 model.fit(train_x, train_y) # 训练模型 from sklearn import metrics y_pred = model.predict(test_x) # 预测测试集 metrics.accuracy_score(y_pred, test_y) # 评价预测结果 print(metrics.classification_report(y_pred, test_y)) features = data_X.columns.values # 取出数据集中的列名,即特征名 # 得到特征与其重要性 x, y = (list(x) for x in zip(*sorted(zip(model.feature_importances_, features), reverse=False))) # 画出柱状图 trace2 = go.Bar(x=x, y=y, marker=dict(color=x, colorscale='Viridis', reversescale=True), name=' ', orientation='h',) # 设置图题、字体等 layout = dict(title=' ', width=900, height=2000, yaxis=dict(showgrid=False, showline=False, showticklabels=True,), margin=dict(l=300,)) # 显示图形 fig1 = go.Figure(data=[trace2]) fig1['layout'].update(layout) iplot(fig1, filename='plots') from sklearn.tree import DecisionTreeClassifier from sklearn.neural_network import MLPClassifier from sklearn.ensemble import AdaBoostClassifier from sklearn.ensemble import BaggingClassifier from sklearn.ensemble import GradientBoostingClassifier from sklearn.linear_model import LogisticRegression # 构建 7 种算法 models = [LogisticRegression(solver='lbfgs'), # 逻辑回归 RandomForestClassifier(n_estimators=100), # 随机森林 DecisionTreeClassifier(), # 决策树 MLPClassifier(max_iter=100), # 多层感知机 AdaBoostClassifier(), # 自适应梯度提升 BaggingClassifier(), # 装袋算法 GradientBoostingClassifier()] # 梯度提升算法 model_name = ['LogisticRegression', 'RandomForestClassifier', "DecisionTreeClassifier", 'MLPClassifier', 'AdaBoostClassifier', 'BaggingClassifier', 'GradientBoostingClassifier'] acc = [] # 存放各算法的准确率 f1 = [] # 存放各算法的 f1 值 recall = [] # 存放各算法的召回率 for model in models: # 训练每个算法 model.fit(train_x, train_y) acc.append(model.score(test_x, test_y)) y_pred = model.predict(test_x) f1.append(metrics.f1_score(y_pred, test_y)) recall.append(metrics.recall_score(y_pred, test_y)) # 打印每种算法的评估结果 pd.DataFrame({"name": model_name, "acc": acc, "f1": f1, "recall": recall})
用Plotily处理数据的基本操作的更多相关文章
- MySQL:数据表基本操作
数据表基本操作 注意点: 1.数据表中已经有数据时,轻易修改数据类型,有可能因为不同的数据类型的数据在机器 中存储的方式及长度并不相同,修改数据类型可能会影响到数据表中已有的数据类型. 2. 数据表 ...
- MySQL之终端(Terminal)管理数据库、数据表、数据的基本操作(转)
MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”. 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的 ...
- MySQL系列:数据表基本操作(2)
1. 指定数据库 mysql> use portal; 2. 数据库表基本操作 2.1 查看数据表 mysql> show tables; +------------------+ | T ...
- pandas学习(创建数据,基本操作)
pandas学习(一) Pandas基本数据结构 Series类型数据 Dataframe类型 基本操作 Pandas基本数据结构 两种常用数据结构: Series 一维数组,与Numpy中的一维ar ...
- MySQL 数据库、数据表、数据的基本操作
1.数据库(database)管理 1.1 create 创建数据库 create database firstDB; 1.2 show 查看所有数据库 mysql> show database ...
- ASP.NET的一般处理程序对数据的基本操作
TableList.ashx: <%@ WebHandler Language="C#" Class="TableList" %> using Sy ...
- mysql数据的基本操作
本文内容: 插入数据: 查询数据 修改数据 删除数据 首发日期:2018-04-11 插入数据: 给所有字段插入数据: 插入单条记录:insert into 表名 values(值列表); 插入多条记 ...
- MySQL开发——【数据的基本操作】
增加数据 基本语法: insert into 数据表 [字段名称1,字段名称2..] values (数据1,数据2...); 特别注意:针对数据类型整型.浮点型数据可以不加单引或双引号,但是如果字段 ...
- MySQL 5.6学习笔记(数据表基本操作)
1. 创建数据表 1.1 最基本的语法 CREATE TABLE tbl_name (col_name column_definition,...) [table_options] -column_d ...
随机推荐
- python 对axis的理解
首先请看一下官方帮助的解释: 轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸. 注意看,官方对于0和1的解释是轴,也就是坐标轴.而坐标轴是有 ...
- Kubernetes1-K8s的简单介绍(转载)
一.简介 1.什么是Kubernetes 简称K8s,用8代替8个字符"ubernerte"而成的速写,K8s是一个开源的容器编排平台,它是一个跨主机集群的开源容器调度平台,用于管 ...
- Python 中 使用 HTMLTestRunner 模块生成测试报告
使用 HTMLTestRunner 模块可以生成测试报告,但是系统自带的报告不详细,不好看,所以找了一份详细的报告 HTMLTestRunner 模板,直接导入就能使用 两种方法生成HTML报告,都 ...
- python虚拟环境配置(上)
前言 嘿,小伙伴们,晚上好呀,我们又见面了,今天又给带来的是什么呢,咱们今天就来说一下python的虚拟环境,可能有的小伙伴会疑惑,python的虚拟环境有什么用呢,我们来一一探讨一下 虚拟环境的作用 ...
- 欧拉回路--P2731 骑马修栅栏 Riding the Fences
实在懒得复制题干了 *传送 1.定义 *如果图G(有向图或者无向图)中所有边一次仅且一次行遍所有顶点的通路称作欧拉通路. *如果图G中所有边一次仅且一次行遍所有顶点的回路称作欧拉回路. *具有欧拉回路 ...
- Java中多态的实例
public class cf { /** * 实际上这里涉及方法调用的优先问题, * 优先级由高到低依次为:this.show(O).super.show(O).this.show((super)O ...
- CF_448D 二分
给定n m k n和m为一个矩阵的行和列,都从1开始,矩阵的每个元素的值即为 i*j(行*列),求里面第k个数 还想找什么规律,发现虽然矩阵里面很有规律,但是n 和m在不断变化 根本不好找 其实元素从 ...
- 静听网+python爬虫+多线程+多进程+构建IP代理池
目标网站:静听网 网站url:http://www.audio699.com/ 目标文件:所有在线听的音频文件 附:我有个喜好就是听有声书,然而很多软件都是付费才能听,免费在线网站虽然能听,但是禁ip ...
- python刷LeetCode:13. 罗马数字转整数
难度等级:简单 题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ...
- 【转】centos7轻松搭建文件服务器
1.安装apache服务器 yum install httpd 2:启动httpd服务 service httpd start 3:查看httpd服务器的版本 4:修改访问端口和文件路径,以防端口冲突 ...