python数据分析之numpy

导包给包重命名

import numpy as np

数组的打印方式

a=np.array([1,2,3,4])
print(a)l=[0,1,2,3]
a=np.array(l)
print(a)a=np.array([1,2,3,4])
print(a)

生成全0数组:

np.zeros(6)
print(np.zeros(6))

修改数组的类型

a=a.astype('float')
a.fill(2.5)
print(a)

生成整数序列

//生成1-9每个数间隔为2数字,1-10左闭右开
a=np.arange(1,10,2)
print(a)

生成等差数列

//生成一到十之间,十个等差数
a=np.linspace(1,10,10)
print(a)

生成随机数

//生成随机数
a=np.random.randn(10)
print(a)
//生成随机整数,1到10,十个整数
a=np.random.randint(1,10,10)
print(a)

数组排序

sort函数

np.sort()

argsort返回从小到大的排列在数组中的索引位置:

order=np.argsort()

order

mv_name[order[0]]

求和

np.sum(mv_num)

最大值

np.max(mv_length)

最小值

np.max(mv_length)

均值

np.mean(mv_length)

标准差

np.std(mv——length)

相关系数矩阵

np.cov(mv_score,mv_length)

多维数组操作

数组形状

a=np.arange(6)

a.shape=2,3//形成两行三列的矩阵

//与只对应的方法是reshape,但它不会修改原来数组的值,而是返回一个新的数组

a.reshape(2,3)

数组连接

有时我们徐亚将不同的数组按一定顺序连接起来

注意,这些数组要用()包括到一个元组中去。

除了给定的轴外,这些数组其他轴的长度必须是一样的

numpy内置函数

a=np.array([-1,2,3,-2])

np.abs(a)

np.exp(a)

np.exp(a)

np.median(a)

np.cumsum(a)

python数据分析之pandas

pandas基本数据结构

pandas中有两种常用的基本结构

series

一维数组,与numpy中的一维array类似,二者与python基本的

数据结构list也很相近。series能保存不同种数据类型,字符串、Boolean值

数字等都能保存series中。

dataframe

二维的表格型数据结构。很多功能与R中的date.frame类似。可以DataFrame理解为Series的容器。以下的内容主要以DataFrame为主

pandas库的series类型

一维series可以用一维列表初始化:

默认情况下,series的下标都是数字(可以使用额外参数指定),类型是统一的

下标,列标,数据

下标使用index属性查看

列标使用columns属性查看

数据值使用values查看

pandas读取数据及数据操作

df=pd.read_excel(r '路径\文件名字')

df.head()

提取数据

df.loc[0:5]

处理异常值

异常值,即在数据集中存在不合理的值,又称离群点,比如年龄为-1

笔记本电脑重量为1吨等,都属于异常值

对于异常值,一般来说数量都会很少,在不影响整体数据分布情况下,我们直接删除就可以了

其他属性的异常值处理,我们会在格式转换部分,进一步讨论

数据保存

数据处理之后,然后将数据重新保存到movie_data.xlsx

数据格式转换

在做数据分析的时候,原始数据往往会因为各种各样的原因产生各种数据格式的问题

数据格式是我们非常需要注意的一点,数据格式错误往往造成很严重的后果

并且,很多异常值也是我们经过格式转换之后才会发现,对我们规整数据,清洗数据有着重要的作用

将年份转化整数格式报错

基本统计分析

描述性统计

dataframe.describe():对dataframe中的数值型数据进行描述性统计

 平均数与中位数

Matplotlib基础

matplotlib是一个python的2D图像包,pyplot封装了很多画图的函数

导入相关的包:

首先导包

import matplotlib.pyplot as plt
import numpy as np
plt.plot([1,2,3,4])//设置y轴
plt.ylabel('y')//设置y轴标签
plt.xlabel('x')//设置x轴标签plt.show()//显示图

#基本用法
#plot函数基本的用法:
#指定x和y
#plt.plot(x,y)
#默认参数,x为0~N-1
#plt.plot(y)
#因此,在上面的例子中,我们没有给定x的值,所以默认值为[0,1,2,3]
#传递x和y:
plt.plot([1,2,3,4],[1,4,9,16])
plt.show()

plt.plot([1,2,3,4],[1,4,9,16],'ro') plt.show()

显示范围

与MATLAB类似,这里可以使用axis函数指定坐标轴显示的范围:

plt.axis([xmin,xmax,ymin,ymax])

传入Numpy数组

之前我们传给plot的参数都是列表,事实上,向plot中传入numpy数组时更常用的做法。事实上,如果传入的是列表,matplotlib会在内部将它转化成数组在进行处理:

在一个图里面画多条线

t=np.arange(0.,5.,0.2)
plt.plot(t,t,'r--',t,t**2,'bs',t,t**3,'g*'
)

传入多组数据

事实上,在上面的例子中,我们不仅仅向plot函数传入了数组,还传入了多组(x,yformat_str)参数,它们在同一张图上显示,这意味着我们不需要使用多个plot函数来画多组数组,只需要可以将这些组合放到一个plot函数中去即可

线条属性

之前提到,我们可以用字符串控制线条的属性,事实上还可以通过关键词来改变线条的性质,例如linwidth可以改变线条的宽度,color可以改变线条的颜色

x=np.linspace(-np.pi,np.pi)//-π到π
y=np.sin(x)//sinx函数
plt.plot(x,y,linewidth=4.0,color='r')//设置粗细与颜色
plt.show()

使用plt.plot()的返回值来设置线条属性

plot函数返回一个line2D对象组成的列表,每个对象代表输入的一对组合,例如:

line1,line2为两个Line2D对象

line1,line2=plt.plot(x1,x2,y1,y2)

返回3个Line2D对象组成的列表

lines=plt.plot(x1,y1,x2,y2,x3,y3)

我们可以使用这个返回值对线条属性进行设置;

x=np.linspace(-np.pi,np.pi)
y=np.sin(x)
line1,line2=plt.plot(x,y,'r-',x,y+1,'g-')//绘图与线条属性
line1.set_antialiased(False)
plt.show()

plt.setp()修改线条性质

x=np.linspace(-np.pi,np.pi)
y=np.sin(x)
line=plt.plot(x,y)
plt.setp(line,color='g',linewidth=4)//设置属性
plt.show()

更方便的做法是使用plt的setp函数

子图

firgure()函数会产生一个指定编号为num的图:

plt.figure(num)

这里,figure(1)其实是可以省略的,因为默认情况下plt会自动产生一幅图像

使用subplot可以在一幅图中生成多个子图,其参数为;

plt.subplot(numrows,numcols,fignum)

当numrows*numols<10时,中间的逗号可以省略,因此plt.subplot(211)就相当于

plt.subplot(2.1.1)

2.电影数据绘图

在了解绘图的基础知识之后,我们可以对电影数据进行可视化分析

(1)绘制每个国家或地区的电影数量的柱状图

柱状图,是一种以长方形的长度为 变量的表达图形的统计报告图

由一系列高度不等的纵向条纹表示数据的情况,用来比较两个或以上的

价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。

柱状图亦可横向排列,或用多维方式表达

(2)绘制每年上映的电影数量的曲线图

曲线图有称折线图,是利用曲线的升降变化来表示被研究现象发展变化趋势的一种图像,它

在分析研究社会经济现象的发展变化、依存关系方面具有重要作用

绘制曲线图时,如果是某一现象的时间指标应将时间绘在坐标的横轴上,指标在坐标的纵轴上

如果是两个现象依存的显示,可以将表示原因 的指标绘在横 轴上,表示

结果的指标绘在纵轴上,同时还应注意整个图形的长宽比例

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
df=pd.read_excel(r'D:\自带 重要文件\桌面\豆瓣电影数据.xlsx')#导入数据
print(df[:5])
data=df['产地'].value_counts()#统计每个产地出现的次数
print(data)
x=data.index#搜索的数据即产地
y=data.values#得到的值
plt.figure(figsize=(10,6))#大小
plt.bar(x,y,color='g')#颜色
plt.title('各个国家或地区电影数量',fontsize=20)#标题
plt.xlabel('国家或地区',fontsize=18)#x轴标题
plt.ylabel('电影数量',fontsize=18)#y轴的标题
plt.tick_params(labelsize=14)
plt.xticks(rotation=90)#x轴90度的旋转
#在柱子上显示值
for a,b in zip(x,y):plt.text(a,b+10,b,ha='center',fontsize=10)plt.grid()#加网格线
plt.show()

(2)绘制每年上映的电影数量的曲线图

曲线图又称折线图,降变化来表示被研究现象 发展变化趋势的一种图形,它在分析研究经济现象的发展变化、依存关系等方面具有重要作用。

绘制曲线图时,如果是某一现象的时间指标应将时间绘在坐标的横轴上,指标绘在坐标的纵轴上,如果是两个现象依存关系的显示,可以将表示原因的指标绘在横轴上,表示结果的指标绘在纵轴上,同时还应注意整个图形的长宽比例

出现这种错误要可能是整型和字符串混用,将年份全部转换成字符串类型

如下代码

df['年代']=df['年代'].astype('str')

显示所有列

pd.set_option('display.max_columns', None)

显示所有行

pd.set_option('display.max_rows', None)

查找年代为34943的那一行

print(df[df['年代']=='34943'])

替换34943年代

方法1:df.replace({"年代":{34943:2000}},inplace=True)
方法2:df.loc[df["年代"].isin([34943]),"年代"]=2000

成功运行

df['年代']=df['年代'].astype('str')
data=df['年代'].value_counts()
data=data.sort_index()
pd.set_option('display.max_rows', None)
print(data)
plt.show()
df['年代']=df['年代'].astype('str')
data=df['年代'].value_counts()
data=data.sort_index()[:-1]
pd.set_option('display.max_rows', None)print(df[df['年代']=='2008'])
print(data)
x=data.index
y=data.values
plt.plot(x,y,color='b')
plt.title('每年电影数量',fontsize=20)
plt.ylabel('电影数量',fontsize=18)
plt.xlabel('年份',fontsize=18)
plt.xticks(rotation=90)
for a,b in zip(x[::10],y[::10]):plt.text(a,b+10,b,ha='center',va='bottom',fontsize=10)
plt.show()

双轴图的画法

根据电影时长和电影评分绘制散点图

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False#防止乱码
df=pd.read_excel(r'D:\自带 重要文件\桌面\豆瓣电影数据.xlsx')#读取数据
import matplotlib.mlab as mlab
from scipy.stats import norm
fig=plt.figure(figsize=(10,8))#生成一个10x8的空白图
ax1=fig.add_subplot(111)#一行一列的图
n,bins,patches=ax1.hist(df['评分'],bins=100,color='m')#n直方图向量,bins区间范围,patches每个bins包含的数据
ax1.set_ylabel('电影数量',fontsize=15)
ax1.set_xlabel('评分',fontsize=15)
ax1.set_title('频率分布图',fontsize=20)
y=norm.pdf(bins,df['评分'].mean(),df['评分'].std())
ax2=ax1.twinx()
ax2.plot(bins,y,'b--')
ax2.set_ylabel('概率分布',fontsize=15)
fig.tight_layout()
plt.show()

5.根据电影时长和电影评分绘制散点图

用两组数据构成多个坐标点,考察坐标点的分布,判断两个变量之间是否村子某种关联或总结坐标

点的分布模式。散点图将序列为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类型的聚合数据

由于我们的数据量过大,所以画出来的图非常杂

可以发现,大部分的电影时长还是集中在100附近,评分大多在7分左右

marker属性

设置散点的形状

df = pd.read_excel(r'D:\自带 重要文件\桌面\豆瓣电影数据.xlsx')  # 读取数据
df['时长']=df['时长'].astype('str')#转换成字符串
df['评分']=df['评分'].astype('str')
x=df['时长'][::100]#
y=df['评分'][::100]#间隔100取一个
# t1=np.arange(11.0,2.0,1)
# t2=np.arange(50,450,50)
plt.figure(figsize=(10,8))# plt.xticks(t2)
# plt.yticks(t1)
plt.scatter(x,y)# plt.legend()
plt.title('电影时长与评分散点图',fontsize=20)
plt.xlabel('时长',fontsize=10)
plt.ylabel('评分',fontsize=10)
# plt.xlim(xmax=1000,xmin=0)
# plt.ylim(ymax=11,ymin=0)
plt.xticks(rotation=90)#x轴90度的旋转plt.show()

 

6.绘制各个地方的评分箱形图

箱形图又称为盒须图,盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图

。因形状如箱子而得名。在各种领域也经常使用,常见于品质管理。它2主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。箱线图的绘制方法是:先找出一组数据的中位数、两个四分位数、上下边缘先;然后,链接两个四分位数画出箱子;再将上下边缘线与箱子相连接。中位数在箱子中间

一般计算过程

(1)计算上四分位数(Q3),中位数,下四分位数(Q1)

(2)计算上四分位数和下四分位数之间的差值,即四分位数差(Q3-Q1)

(3)绘制箱线图的上下范围,上限为上四分位数,下限为下四分位数。在箱子内部中位数的位置绘制横线

(4)大于四分位数1.5倍数四分位数差的值,或者小于下四分位数1.5倍四分位数差的值,划为异常值

(5)异常值之外,最靠近上边缘和下边缘的两个值处,划横线,作为箱线图的触须

(6)极端异常值,即超出四分位数差3倍数距离的异常值,用实心点表示;较为温和异常值,

即处于1.5倍数-3倍四分位数差之间的异常值,用空心点表示

(7)为箱线图添加名称,数轴等

df = pd.read_excel(r'D:\自带 重要文件\桌面\豆瓣电影数据.xlsx')  # 读取数据
data=df[df.产地=='美国']['评分']
plt.figure(figsize=(10,6))
plt.boxplot(data,whis=2,flierprops={'marker':'o','markerfacecolor':'r','color':'k'},patch_artist=True,boxprops={'color':'k','facecolor':'#9999ff'})
plt.title('美国电影评分',fontsize=20)plt.show()

多组数据箱线图

#多组数据箱线图data1=df[df.产地=='中国大陆']['评分']
data2=df[df.产地=='日本']['评分']
data3=df[df.产地=='中国香港']['评分']
data4=df[df.产地=='英国']['评分']
data5=df[df.产地=='法国']['评分']
plt.figure(figsize=(12,8))
plt.boxplot([data1,data2,data3,data4,data5],labels=['中国大陆','日本','中国香港','英国','法国'],vert=False)#vert=False让图横过来
ax=plt.gca()
ax.patch.set_facecolor('gray')
ax.patch.set_alpha(0.3)
plt.title('电影评分箱线图',fontsize=20)plt.show()

7.相关系数矩阵图--热力图

pandas本身也封装了画图函数

我们可以画出各个属性之间的散点图,对角线是分布图

现在我们来画电影时长,投票人数,评分的一个相关系数矩阵图

seaborn是一个精简的python库,可以创建具有统计意义的图表,能理解pandas的DataFrame类型

python数据分析相关推荐

  1. Python数据分析<12306信息可视化>

    12306信息可视化 这里写目录标题 12306信息可视化 发现数据 代码实现 数据处理 数据可视化 url=https://kyfw.12306.cn/otn/resources/js/framew ...

  2. python逐笔输入数据_知到智慧树Python数据分析与数据可视化结课测验

    知到智慧树Python数据分析与数据可视化结课测验答案 更多相关问题 已知三角形三个顶点的坐标是A(-1,2,3),B(1,1,1),C(0,0,5),试证三角形ABC是直角三角形,并求角B-- Wh ...

  3. python集合中的元素不允许重复_Python语言中同一个集合中的元素不会重复,每个元素都是唯一的。-智慧树Python数据分析与数据可视化章节答案...

    Python数据分析与数据可视化:Python语言中同一个集合中的元素不会重复,每个元素都是唯一的.[?ж???] A:对 B:错 Python数据分析与数据可视化章节测试答案: 对 更多相关问题 智 ...

  4. 基于 Python 的招聘信息可视化分析系统

    温馨提示:文末有 CSDN 平台官方提供的博主 Wechat / QQ 名片 :) 1. 项目简介 本项目利用 Python 从某招聘网站抓取海量招聘数据,进行数据清洗和格式化后存储到关系型数据库中( ...

  5. Python数据分析——Matplotlib数据可视化基础(二)

    Python数据分析--Matplotlib数据可视化基础(二) 思维导图: 图形的绘制 认识要绘制的图形 基本绘图流程 pyplot基础图表函数 pyplot饼图的绘制 pie函数 matplotl ...

  6. python数据分析与可视化-Python数据分析与数据可视化

    数据分析.数据挖掘与数据可视化是一个古老的话题,并非什么新生事物.近些年来,借助于计算机软硬件的飞速发展,数据分析.挖掘.可视化相关理论和技术在各领域的应用更是有了质的飞跃.饭店选址.公交路线与站牌规 ...

  7. Python数据分析:数据可视化实战教程

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于碧茂大数据 ,作者碧茂大数据 明确三个步骤: 确定问题,选择图形 转 ...

  8. python画仿真图-Python数据分析:绘图可视化之matplotlib入门

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于码客趣分享,作者码客趣分享 matplotlib的通常引入约定 ...

  9. 智慧树python数据分析与数据可视化_智慧树知到Python数据分析与数据可视化答案免费查询...

    你校准备举行"节约用水,从现在做起"的英语征文比赛,你打算投稿.请根据以下表格内容写一篇英语短文.必要性没 下面的表格是Sunny School学生一日三餐的菜谱及Sally的爱好 ...

  10. python知道章节答案_智慧树知道Python数据分析与数据可视化答案,章节期末教程考试网课答案...

    人物雕塑有头像.胸像.半身像和()之分.[2012年真题]A.浮雕头像B.半身带手像C.圆雕头像D.全身 长期或频繁地()架空线路或其他带电体作业时,应采取隔离防护措施.A.靠近B.远离C.接触 权责 ...

最新文章

  1. 工业互联网平台创新发展白皮书(2018)
  2. 代码片段管理器——SnippetsLab
  3. Linux下排查进程占用cpu高的问题
  4. java 中class相关的问题
  5. 用c 语言写出五子棋的代码,C语言案例:控制台版本的五子棋游戏【代码】
  6. BZOJ4003: [JLOI2015]城池攻占
  7. git 列出两个 commit 之间变更的文件列表
  8. Oracle 新建用户、赋予权限
  9. SQL语句优化—in,not in,exists,not exists, left join...on
  10. 【深度学习系列】PaddlePaddle可视化之VisualDL
  11. 【图像隐写】基于matlab GUI DWT+DCT+PBFO改进图像水印隐藏提取【含Matlab源码 081期】
  12. 排序算法-归并排序详细讲解(MergeSort)
  13. matlab rms数据滤波,与RMS相关的5个信息,如何通过RMS结果滤波来提高精度
  14. Tumblr营销大法(三)
  15. 工业互联网+VLC,可见光通信撬动工业4.0!
  16. js获取所有选中的复选框的值
  17. iOS 並行編程初步
  18. 利用ARCGIS和QGIS画等值线图
  19. No data type for node: org.hibernate.hql.ast.tree.IdentNode问题的解决
  20. 【思维题 集合hash 树上差分】11.5撸树

热门文章

  1. ALS算法原理和在音乐推荐上的应用
  2. 圣诞节快来了~用python做一个粒子烟花震撼众人赚个女孩回来吧~
  3. 《用户至上:用户研究方法与实践(原书第2版)》一2.3 理解产品
  4. [Discuz!模板] 听雨轩风格[GBK][utf8][一键安装 DIY][20110918更新]
  5. html页面边框的简单设置方法
  6. 后羿采集器怎么导出数据_免费爬虫工具:后羿采集器如何采集同花顺圈子评论数据...
  7. 奇怪的小鸭子也增加了
  8. 第十四届蓝桥杯要开始了(2022年)
  9. python制作节日贺卡
  10. 什么是DevOps的三步工作法?