python怎么导入数据做统计图(python怎么导入数据做统计图表)
如何用python做数据分析
首先,是数据分析的模块,numpy 高效处理数据,提供数组支持,很多模块都依赖它,比如pandas,scipy,matplotlib都依赖他,所
以这个模块都是基础。所以必须先安装numpy。
然后,pandas 主要用于进行数据的采集与分析,scipy 主要进行数值计算。同时支持矩阵运算,并提供了很多高等数据处理功能,比如
积分,微分方程求样等。matplotlib 作图模块,结合其他数据分析模块,解决可视化问题,statsmodels 这个模块主要用于统计分析,
Gensim 这个模块主要用于文本挖掘,sklearn,keras 前者机器学习,后者深度学习。
然后,安装的numpy版本一定要是带mkl版本的,没有返回值的,修改原处的值,这里等于修改了Xx.max() # 最大值,对二维数组都管
用x.min() # 最小值,对二维数组都管用x1=x[1:3] # 取区间,和python的列表没有区别。
然后,通过pandas导入数据,pandas支持多种输入格式,我这里就简单罗列日常生活最常用的几种,对于更多的输入方式可以查看源码
后者官网。csv文件导入后显示输出的话,是按照csv文件默认的行输出的,有多少列就输出多少列。
更多学习内容,请点击《Python学习网》!
python导入csv并利用其中数据画图
昨天手机看的,没看到你发的表格,抱歉。给你写个简单的。
import pandas
import matplotlib.pyplot as plt
# sep这是是分割符,具体看你自己的文件分割是用什么,usecoles是取a,b,c三列
a_b_c = pandas.read_csv("这里写你的文件地址", sep="\t", usecols=[1,2,3])
# 取c在3000到10000的行
a = a_b_c[(a_b_c['c']=3000) (a_b_c['c']=10000)]
a_col = a["a"]
b_col = a["b"]
plt.scatter(a_col, b_col)
plt.show()
流程大概是这样,具体需要细化的地方看官方文档或者百度查询。
Python 数据可视化:数据分布统计图和热图
本课将继续介绍 Seaborn 中的统计图。一定要牢记,Seaborn 是对 Matplotlib 的高级封装,它优化了很多古老的做图过程,因此才会看到一个函数解决问题的局面。
在统计学中,研究数据的分布情况,也是一个重要的工作,比如某些数据是否为正态分布——某些机器学习模型很在意数据的分布情况。
在 Matplotlib 中,可以通过绘制直方图将数据的分布情况可视化。在 Seaborn 中,也提供了绘制直方图的函数。
输出结果:
sns.distplot 函数即实现了直方图,还顺带把曲线画出来了——曲线其实代表了 KDE。
除了 sns.distplot 之外,在 Seaborn 中还有另外一个常用的绘制数据分布的函数 sns.kdeplot,它们的使用方法类似。
首先看这样一个示例。
输出结果:
① 的作用是设置所得图示的背景颜色,这样做的目的是让下面的 ② 绘制的图像显示更清晰,如果不设置 ①,在显示的图示中看到的就是白底图像,有的部分看不出来。
② 最终得到的是坐标网格,而且在图中分为三部分,如下图所示。
相对于以往的坐标网格,多出了 B 和 C 两个部分。也就是说,不仅可以在 A 部分绘制某种统计图,在 B 和 C 部分也可以绘制。
继续操作:
输出结果:
语句 ③ 实现了在坐标网格中绘制统计图的效果,jp.plot 方法以两个绘图函数为参数,分别在 A 部分绘制了回归统计图,在 B 和 C 部分绘制了直方图,而且直方图分别表示了对应坐标轴数据的分布,即:
我们把有语句 ② 和 ③ 共同实现的统计图,称为联合统计图。除了用 ② ③ 两句可以绘制这种图之外,还有一个函数也能够“两步并作一步”,具体如下:
输出结果:

Python 数据可视化:分类特征统计图
上一课已经体验到了 Seaborn 相对 Matplotlib 的优势,本课将要介绍的是 Seaborn 对分类数据的统计,也是它的长项。
针对分类数据的统计图,可以使用 sns.catplot 绘制,其完整参数如下:
本课使用演绎的方式来学习,首先理解这个函数的基本使用方法,重点是常用参数的含义。
其他的参数,根据名称也能基本理解。
下面就依据 kind 参数的不同取值,分门别类地介绍各种不同类型的分类统计图。
读入数据集:
然后用这个数据集制图,看看效果:
输出结果:
毫无疑问,这里绘制的是散点图。但是,该散点图的横坐标是分类特征 time 中的三个值,并且用 hue='kind' 又将分类特征插入到图像中,即用不同颜色的的点代表又一个分类特征 kind 的值,最终得到这些类别组合下每个记录中的 pulse 特征值,并以上述图示表示出来。也可以理解为,x='time', hue='kind' 引入了图中的两个特征维度。
语句 ① 中,就没有特别声明参数 kind 的值,此时是使用默认值 'strip'。
与 ① 等效的还有另外一个对应函数 sns.stripplot。
输出结果:
② 与 ① 的效果一样。
不过,在 sns.catplot 中的两个参数 row、col,在类似 sns.stripplot 这样的专有函数中是没有的。因此,下面的图,只有用 sns.catplot 才能简洁直观。
输出结果:
不过,如果换一个叫角度来说,类似 sns.stripplot 这样的专有函数,表达简单,参数与 sns.catplot 相比,有所精简,使用起来更方便。
仔细比较,sns.catplot 和 sns.stripplot 两者还是稍有区别的,虽然在一般情况下两者是通用的。
因此,不要追求某一个是万能的,各有各的用途,存在即合理。
不过,下面的声明请注意: 如果没有非常的必要,比如绘制分区图,在本课中后续都演示如何使用专有名称的函数。
前面已经初步解释了这个函数,为了格式完整,这里再重复一下,即 sns.catplot 中参数 kind='strip'。
如果非要将此函数翻译为汉语,可以称之为“条状散点图”。以分类特征为一坐标轴,在另外一个坐标轴上,根据分类特征,将该分类特征数据所在记录中的连续值沿坐标轴描点。
从语句 ② 的结果图中可以看到,这些点虽然纵轴的数值有相同的,但是没有将它们重叠。因此,我们看到的好像是“一束”散点,实际上,所有点的横坐标都应该是相应特征分类数据,也不要把分类特征的值理解为一个范围,分散开仅仅是为了图示的视觉需要。
输出结果:
④ 相对 ② 的图示,在于此时同一纵轴值的都重合了——本来它们的横轴值都是一样的。实现此效果的参数是 jitter=0,它可以表示点的“振动”,如果默认或者 jitter=True,意味着允许描点在某个范围振动——语句 ② 的效果;还可设置为某个 0 到 1 的浮点,表示许可振动的幅度。请对比下面的操作。
输出结果:
语句 ② 中使用 hue='kind' 参数向图中提供了另外一个分类特征,但是,如果感觉图有点乱,还可以这样做:
输出结果:
dodge=True 的作用就在于将 hue='kind' 所引入的特征数据分开,相对 ② 的效果有很大差异。
并且,在 ⑤ 中还使用了 paletter='Set2' 设置了色彩方案。
sns.stripplot 函数中的其他有关参数,请读者使用帮助文档了解。
此函数即 sns.catplot 的参数 kind='swarm'。
输出结果:
再绘制一张简单的图,一遍研究这种图示的本质。
输出结果:
此图只使用了一个特征的数据,简化表象,才能探究 sns.swarmplot 的本质。它同样是将该特征中的数据,依据其他特征的连续值在图中描点,并且所有点在默认情况下不彼此重叠——这方面与 sns.stripplot 一样。但是,与之不同的是,这些点不是随机分布的,它们经过调整之后,均匀对称分布在分类特征数值所在直线的两侧,这样能很好地表示数据的分布特点。但是,这种方式不适合“大数据”。
sns.swarmplot 的参数似乎也没有什么太特殊的。下面使用几个,熟悉一番基本操作。
在分类维度上还可以再引入一个维度,用不同颜色的点表示另外一种类别,即使用 hue 参数来实现。
输出结果:
这里用 hue = 'smoker' 参数又引入了一个分类特征,在图中用不同颜色来区分。
如果觉得会 smoker 特征的值都混在一起有点乱,还可以使用下面方式把他们分开——老调重弹。
输出结果:
生成此效果的参数就是 dodge=True,它的作用就是当 hue 参数设置了特征之后,将 hue 的特征数据进行分类。
sns.catplot 函数的参数 kind 可以有三个值,都是用于绘制分类的分布图:
下面依次对这三个专有函数进行阐述。