可 清 晰 有 效 的 解 读 、 传 递 、 解 释 信 息 。 在 前 期 数 据 整 理 阶 段 , 通 过 数 据 可 视 化 模 型 , 可 发 现 一 些 数 据 的 问 题 ( 如 异 常 值 、 缺 失 值 等 ) ; 后 期 完 成 数 据 建 模 预 测 后 , 可 通 过 数 据 可 视 化 来 解 释 预 测 的 结 果 。 总 的 来 说 , 不 论 是 在 做 数 据 分 析 专 案 、 论 文 数 据 量 化 的 过 程 , 数 据 可 视 化 都 是 非 常 实 用 和 提 高 解 释 力 的 方 式 。 可清晰有效的解读、传递、解释信息。\\在前期数据整理阶段,通过数据可视化模型,\\可发现一些数据的问题(如异常值、缺失值等);\\后期完成数据建模预测后,\\可通过数据可视化来解释预测的结果。\\总的来说,不论是在做数据分析专案、\\论文数据量化的过程,\\数据可视化都是非常实用和提高解释力的方式。 可清晰有效的解读、传递、解释信息。在前期数据整理阶段,通过数据可视化模型,可发现一些数据的问题(如异常值、缺失值等);后期完成数据建模预测后,可通过数据可视化来解释预测的结果。总的来说,不论是在做数据分析专案、论文数据量化的过程,数据可视化都是非常实用和提高解释力的方式。
用 P y t h o n 实 现 数 据 可 视 化 的 过 程 中 , 常 用 的 功 能 包 是 : M a t p l o t l i b 和 S e a b o r n 。 前 者 比 较 基 础 与 实 用 ; 后 者 则 拥 有 多 种 特 性 , 适 用 于 创 建 复 杂 的 可 视 化 图 形 。 S e a b o r n 是 P y t h o n 的 数 据 统 计 图 形 库 , 是 k a g g l e 比 赛 中 最 常 用 的 可 视 化 库 。 是 在 m a t p l o t l i b 基 础 上 进 行 了 高 级 A P I 封 装 , 图 表 装 饰 更 加 容 易 , 可 以 用 更 少 的 代 码 做 出 更 美 观 的 图 。 高 度 兼 容 了 n u m y 、 p a n d a s 、 s c i p y 等 库 , 使 得 数 据 可 视 化 更 加 方 便 快 捷 。 用Python实现数据可视化的过程中,常用的功能包是:\\Matplotlib和Seaborn。\\前者比较基础与实用;后者则拥有多种特性,\\适用于创建复杂的可视化图形。\\Seaborn是Python的数据统计图形库,是kaggle比赛中最常用的可视化库。\\是在matplotlib基础上进行了高级API封装,图表装饰更加容易,\\可以用更少的代码做出更美观的图。\\高度兼容了numy、pandas、scipy等库,使得数据可视化更加方便快捷。 用Python实现数据可视化的过程中,常用的功能包是:Matplotlib和Seaborn。前者比较基础与实用;后者则拥有多种特性,适用于创建复杂的可视化图形。Seaborn是Python的数据统计图形库,是kaggle比赛中最常用的可视化库。是在matplotlib基础上进行了高级API封装,图表装饰更加容易,可以用更少的代码做出更美观的图。高度兼容了numy、pandas、scipy等库,使得数据可视化更加方便快捷。
P y t h o n 可 视 化 , M a t p l o t l i b 作 柱 状 图 Python可视化,Matplotlib作柱状图 Python可视化,Matplotlib作柱状图
#设置模块
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.dates as mdates # 设置日期格式
#加载数据
data=pd.read_csv ('*** / cars.csv')
#数据文件所在路径
#将”Year"字段转成时间格式
data['date']=pd.to_datetime(data['Year'])
data
#汇总得到每年的"Miles_per_Gallon”平均值
data_new=data.qroupby('date')['Miles_per_Gallon'].mean().reset_index()
data_new
#设置画布
fig,ax=plt.subplots(figsize=(10,6))
#绘制柱状图
ax.bar(data_new['date'],data_new['Miles_per_Gallon'],width=300)
#设置x轴按照年月日格式显示
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
#设置图表标题
ax.set_title('CARS')
#设置y轴数据区间
ax.set_ylim (0,50)
#设置网格
ax.grid(True)
#添加数据标签
for x,y in zip(data_new['date'],data_new['Miles_per_Gallon']):
plt.text (x,y+3,ha='center',va='top')
# x 数据在x轴上的位置
# y+3 数据在Y轴上的位置,向上偏移3个单位
# '%.2f'%y 数据保留2位小数点
# ha='center' 居中对齐
# va='top' 在条形的上方
16 个 m a t p l o t l i b 绘 图 技 巧 16个matplotlib绘图技巧 16个matplotlib绘图技巧
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,10)
plt.title('chenqionghe')
plt.plot(x,x*x)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-10,11,1)
y=x*x
plt.plot(x,y)
plt.title('chenqionghe')
plt.text(-2.5,30,'function y=x*x')
# plt.show()
plt.savefig('test.jpg')
#xy:为备注的坐标点
#xytext:备注文字的坐标(默认为xy的位置)
#arrowprops:在xy和xytext之间绘制一个箭头
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(-10,11,1)
y=x*x
plt.title('chenqionghe')
plt.plot(x,y)
plt.annotate('chenqionghe is a kind man',xy=(0,1),xytext=(-4,20),arrowprops={'headwidth':10,'facecolor=red'})
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,20)
plt.xlabel('chenqionghe')
plt.ylabel('muscle')
plt.plot(x,x*x)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
plt.plot(x,x)
plt.plot(x,x*2)
plt.plot(x,x*3)
plt.plot(x,x*4)
#直接传入Legend
plt.legend(['chenqionghe','light','weight','baby'])
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x=np. arange(1,5)
#频色的几种方式
plt.plot(x,color='g')
plt.plot(x+1,color='0.5')
plt.plot(x+2,color='#FFOBFF')
plt.plot(x+3,color=(0.1,0.2,0.3))
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,5)
plt.plot(x,marker='o')
plt.plot(x+1,marker='>')
plt.plot(x+2,marker='s')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
plt.title('chenqionghe')
plt.xlim([1,8])
plt.ylim([1,5])
plt.text(2,4,r'$ \alpha \beta \pi \lambda lomega $',size=25)
plt.text(4,4,r'$ \sin(0)=\cos(\frac{\pi){2}) $',size=25)
plt.text(2,2,r'$ \lim_{x \rightarrow y} \frac{1}{x^3} $',size=25)
plt.text(4,2,r'$ \sqrt[4]{x}=\sqrt{y} $',size-25)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x='chenqionghe','light','weigtht','baby'
y=[15, 30,45,10]
#pLt-grid()
#也可以设置颌色、线条宽度、线条祥式
plt.grid(color='g',linewidth='1',linestyle='-.')
plt.plot(x,y)
plt.show()
#同时调整x轴和y轴: plt.locator_params(nbins=20)
#只调整x轴: plt.locator_params('x',nbins=20)
#只调整y轴: plt.locator_params('y',nbins=20)
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,30,1)
plt.plot(x,y)
#x知和y轴分别显示20个
plt.locator_params(nbins=20)
plt.show()
#axis:[0,5,0,10],x从0到5,y从0到10
#xlim:对应参数有xmin和xmax,分别能调整最大值最小值
#ylim:同xlim用法
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,30,1)
plt.plot(x,x*x)
#显示坐标釉,plt.axis(),4个数字分别代表x轴和y抽的最小坐标,最大坐标
#调整x为10到25
plt.xlim(xmin=15,xmax=25)
plt.plot(x,x*x)
plt.show()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
x=pd.date_range('2020/01/01', periods=30)
y=np.arange(0,30,1)
plt.plot(x,y)
plt.gcf().autofmt_xdate()
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(1,20)
y1=x*x
y2-np.log(x)
plt.plot(x,y1)
#添加一个坐标轴,,默认0到1
plt.twinx()
plt.plot(x,y2,'r')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,5*np.pi,1000)
y1=np.sin(x)
y2=np.sin(2*x)
plt.plot(x,y1)
plt.plot(x,y2)
plt.fill(x,y1,'g')
plt.fill(x,y2,'r')
plt.title('chenqionghe')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mptaches
xy1=np.array([0.2,0.2])
xy2-np.array([0.2,0.8])
xy3-np.array([0.8,0.2])
xy4=np.array([0.8,0.8])
fig,ax=plt.subplots()
#圆形,指定坐标和半径
circle=mptaches.circle(xy1,0.15)
ax.add_patch(circle)
#长方形
rect=mptaches.Rectangle(xy2,0.2,0.1,color='r')
ax.add_patch(rect)
#多边形
polygon=mptaches.RegularPolygon(xy3,6,0.1,color='g')
ax.add_patch(polygon)
#椭圆
ellipse=mptaches.Ellipse(xy4,0.4,0.2,color='c')
ax.add_patch(ellipse)
ax.axis('equal')
plt.show()
#matplotlib支持多种样式,可以通过plt.style.use切换样式,例如:
plt.style.use('seaborn-whitegrid')
#输入plt.style.available可以查看所有的样式
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
线 性 图 线性图 线性图
X = np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S = np.cos(X),np.sin(X)
#在-Tt和之间产生256个均匀的数值,C是256个余弦值,X是256个正弦值
plt.plot(X,C)
plt.plot(X,S)
#注:将C和S的数值分配形成线性图
#查看及保存图片为png格式
plt.show()
savefig("./path/name.png",dpi=72)
#若要修改线条的颜色等属性,可用以下代码代替。
plt.plot(X,C,color="blue",linewidth=2.5,linestyle="-")
plt.plot(X,S,color="red",linewidth=2.5,linestyle="-")
散 点 图 散点图 散点图
N=10 #点的数量
x = np.random.rand(N) #随机形成数字作为x轴
y = np.random.rand(N) #随机形成数字作为y轴
x2 = np.random.rand(N) #随机形成数字
y2 = np.random.rand(N) #随机形成数字
area = np.random.rand(N)*1000 #设置每个点的面积大小
fig = plt.figure()
ax = plt.subplot()
ax.scatter(x,y,s=area, alpha=0.5) #绘制散点图,面积随机
ax.scatter(x2,y2,s=area, c='green',alpha=0.6)
#改变x2,y2的颜色
plt.show()
条 形 图 条形图 条形图
df = DataFrame(np.random.rand(6,4),
Index['one','two','three','four','five','six'],
columns=pd.Index(['A','B','C','D'],
name='Genus'))
df.plot(kind='bar')
plt.show()
饼 图 饼图 饼图
labels = 'x','y','Z'
sizes = [31.4,15.7,52.9]
fig1,ax1 = plt.subplots()
ax1.pie(sizes,labels=labels,
shadow=True, startangle=90,
autopct='%.1f')
ax1.axis('equal')
ax1.legend(labels,
title="variables:",
loc="center left",
bbox_to_anchor=(1,0,0.5,1))
ax1.set_title("pie chart with percentage")
plt.show()
文 字 云 文字云 文字云
from wordcloud import WordCloud
import matplotlib.pyplot as plt
text=("I want to study Python by following
Cathy is posts. ...........")
wordcloud =
WordCloud(background_color="white”,
width=480, height=480,
margin=0).generate(text)
plt.imshow(wordcloud,
interpolation='bilinear')
plt.axis("off")
plt.margins(x=O,y=O)
plt.show()
包 的 使 用 : 当 提 供 的 功 能 比 较 复 杂 , 一 个 p y 文 件 写 不 下 时 就 需 要 包 , 本 质 上 包 也 是 由 模 块 组 成 的 。 包的使用:\\ 当提供的功能比较复杂,一个py文件写不下时就需要包,\\本质上包也是由模块组成的。 包的使用:当提供的功能比较复杂,一个py文件写不下时就需要包,本质上包也是由模块组成的。
导入包:导入包则执行包下的__init__.py
import glance.api
from glance import api
调 用 使 用 包 调用使用包 调用使用包
#调用pandas模块,命名别名为pd
import pandas as pd
#调用matplotlib中的pyplot .命名别名为plt
import matplotlib.pyplot as plt
#调用matplotlib模块
import matplotlib
主 要 思 路 : 1 、 对 存 在 E x c e l 中 的 数 据 进 行 读 取 , 通 过 p a n d a s 的 r e a d − e x c e l 函 数 实 现 , 得 到 一 个 D a t a f r a m e ; 2 、 再 对 空 值 进 行 预 处 理 通 过 f i l l n a 对 所 有 空 值 赋 0 ; 3 、 再 对 数 据 进 行 整 理 通 过 自 定 义 函 数 和 A p p l y 实 现 按 照 年 龄 分 段 ; 4 、 接 下 来 是 通 过 以 年 龄 段 按 照 人 员 编 号 进 行 分 组 计 数 , 统 计 每 个 年 龄 段 对 应 的 人 数 , 这 里 使 用 到 了 g r o u p b y 和 c o u n t 函 数 , 这 一 点 跟 S Q L 是 一 致 的 , 类 似 于 E x c e l 中 的 透 视 表 或 者 c o u n t i f s , 实 现 的 功 能 都 是 一 样 的 。 主要思路:\\ 1、对存在Excel中的数据进行读取,通过pandas的read-excel函数实现,\\得到一个Dataframe;\\2、再对空值进行预处理通过fillna对所有空值赋0;\\3、再对数据进行整理通过自定义函数和Apply实现按照年龄分段;\\4、接下来是通过以年龄段按照人员编号进行分组计数,统计每个年龄段对应的人数,\\这里使用到了groupby和count函数,这一点跟SQL是一致的,\\类似于Excel中的透视表或者countifs,实现的功能都是一样的。 主要思路:1、对存在Excel中的数据进行读取,通过pandas的read−excel函数实现,得到一个Dataframe;2、再对空值进行预处理通过fillna对所有空值赋0;3、再对数据进行整理通过自定义函数和Apply实现按照年龄分段;4、接下来是通过以年龄段按照人员编号进行分组计数,统计每个年龄段对应的人数,这里使用到了groupby和count函数,这一点跟SQL是一致的,类似于Excel中的透视表或者countifs,实现的功能都是一样的。
具 体 代 码 具体代码 具体代码
#读取Excel
df = pd.read_excel('例子.xlsx')
#空值处理,全部改变为0
df.fillna(空,inplace=True)
#函数应用,新增年龄分段列
df[’年龄段]= df.apply (lambda x:nianling(x['年龄’]), axis=1)
#建立空Dataframe
data = pd. DataFrame()
#按照年龄段分组计数
data['人数']= df.groupby(['年龄段])[’人员编号'].count ()
主 要 思 路 这 部 分 主 要 用 到 两 个 知 识 点 : 1 、 是 自 定 义 函 数 d e f , 结 合 A p p l y 可 以 返 回 自 己 需 要 的 数 值 ; 2 、 同 时 这 里 用 到 I F 判 断 语 句 , 与 S Q L 中 的 I F 类 似 , 与 E x c e l 的 I F 功 能 也 相 同 , 起 到 判 断 数 据 作 用 , 具 体 结 构 包 含 I F , E L I F , E L S E 结 构 。 主要思路\\ 这部分主要用到两个知识点:\\1、是自定义函数def,结合Apply可以返回自己需要的数值;\\ 2、同时这里用到IF判断语句,与SQL中的IF类似,\\与Excel的IF功能也相同,起到判断数据作用,\\具体结构包含IF,ELIF,ELSE结构。 主要思路这部分主要用到两个知识点:1、是自定义函数def,结合Apply可以返回自己需要的数值;2、同时这里用到IF判断语句,与SQL中的IF类似,与Excel的IF功能也相同,起到判断数据作用,具体结构包含IF,ELIF,ELSE结构。
具 体 代 码 具体代码 具体代码
def nianling(x):#自定义函数
if x<20:
return'20以下'
elif 20<= x <=29:
return'20_29'
elif 30<= x <=39:
return'30_39'
elif 40<= x <=49:
return'40_49'
elif 50<= x:
return'50岁以上'
else:
pass
主 要 思 路 数 据 分 析 的 最 后 一 步 是 数 据 可 视 化 , 这 里 采 用 了 基 本 的 m a t p l o t l i b 包 , 优 势 是 函 数 都 是 固 定 的 , 可 复 制 性 强 , 每 次 只 需 更 改 X 和 Y 轴 列 表 即 可 。 M a t p l o t l i b 输 出 的 图 片 可 以 保 存 , 同 时 也 可 以 对 图 片 进 行 多 维 度 的 修 饰 , 使 用 的 m a t p l o t l i b , 构 建 柱 形 图 来 展 现 数 据 , E x c e l 能 实 现 的 标 题 、 标 签 、 图 表 颜 色 、 横 纵 坐 标 坐 标 都 可 以 通 过 代 码 实 现 , 同 时 可 以 对 图 表 图 片 进 行 基 本 的 设 置 以 及 保 存 到 指 定 位 置 。 主要思路\\ 数据分析的最后一步是数据可视化,这里采用了基本的matplotlib包,\\优势是函数都是固定的,可复制性强,每次只需更改X和Y轴列表即可。\\Matplotlib输出的图片可以保存,同时也可以对图片进行多维度的修饰, \\使用的matplotlib,构建柱形图来展现数据,\\Excel能实现的标题、标签、图表颜色、横纵坐标坐标都可以通过代码实现,\\同时可以对图表图片进行基本的设置以及保存到指定位置。 主要思路数据分析的最后一步是数据可视化,这里采用了基本的matplotlib包,优势是函数都是固定的,可复制性强,每次只需更改X和Y轴列表即可。Matplotlib输出的图片可以保存,同时也可以对图片进行多维度的修饰,使用的matplotlib,构建柱形图来展现数据,Excel能实现的标题、标签、图表颜色、横纵坐标坐标都可以通过代码实现,同时可以对图表图片进行基本的设置以及保存到指定位置。
具 体 代 码 具体代码 具体代码
#正常显示中文标签,包括:x轴,y铀,标题,图例
matplotlib.rcParams['font.sans-serif']=['simHei']
#有时候x轴或者y轴刻度负号不能显示
matplotlib.rcParams['axes.unicode_minus'] = False
#设置Y轴人数列表
renshu =[5000,15000,35000,50000,2000]
#从下往上画
plt.barh(range(5),renshu,height=0.7,color='blue',alpha=0.8)
#设置X轴列表
plt.yticks(range(5),['50岁以上','40_49','30_39','20_29','20以下'])
#设置Y翱起始值
plt.xlim (30,60000)
#设置x轴标题
plt.xlabel("年龄段")
#设置总标题
plt.title("分段年龄人数分布")
#没置标签
for x, y in enumerate(renshu) :
plt.text(y +0.2,x -0.1,'%s'% y)
plt.show ()#展现图片
总结了这67个pandas函数,完美解决数据处理,拿来即用!
df #DataFrame,对象
一 、 导 入 数 据 : 7 个 常 见 用 法 : 一、导入数据:7个常见用法: 一、导入数据:7个常见用法:
pd.DataFrame() #自己创建数据框,用于练习
pd.read_csv(filename) #从CSV文件导入数据
pd.read_table(filename) #从限定分隔符的文本文件导入数据
pd.read_excel(filename) #从Excel文件导入数据
pd.read_sql(query,connection_object) #从SQL表/库导入数据
pd.read_json(json_string) #从JSON格式的字符串导入数据
pd.read_html(url)
#解析URL、字符串或者HTML文件,抽取其中的tables表格
二 、 导 出 数 据 , 5 个 常 见 用 法 : 二、导出数据,5个常见用法: 二、导出数据,5个常见用法:
df.to_csv(filename) #导出数据到CSV文件
df.to_excel(filename) #导出数据到Excel文件
df.to_sql(table_name,connection_object) #导出数据到SQL表
df.to_json(filename) #以Json格式导出数据到文本文件
writer=pd.ExcelWriter('test.xlsx',index=False)
df.to_excel(writer,sheet_name='单位')
writer.save()
#将多个数据帧写入同一个工作簿的多个sheet(工作表)
三 、 查 看 数 据 , 11 个 常 见 用 法 : 三、查看数据,11个常见用法: 三、查看数据,11个常见用法:
df.head(n) #查看DataFrame对象的前n行
df.tail(n) #查看DataFrame对象的最后n行
df.shape() #查看行数和列数
df.info() #查看索引、数据类型和内存信息
df.columns() #查看字段(首行)名称
df.describe() #查看数值型列的汇总统计
s.value_counts(dropna=False) #查看Series对象的唯一值和计数
df.apply(pd.Series.value_counts)
#查DataFrame对象中每一列的唯一值和计数
df.isnull().any() #查看是否有缺失值
df[df[column_name].duplicated()]
#查看column_name字段数据重复的数据信息
df[df[column_name].duplicated()].count()
#查看column_name字段数据重复的个数
四 、 数 据 选 取 , 10 个 常 见 用 法 : 四、数据选取,10个常见用法: 四、数据选取,10个常见用法:
df[col] #根据列名,并以Series的形式返回列
df[[col1,col2]] #以DataFrame形式返回多列
s.iloc[0] #按位置选取数据
s.loc['index_one'] #按索引选取数据
df.iloc[0;:] #返回第一行
df.iloc[0,0] #返回第一列的第一个元素
df.loc[0,:]
#返回第一行(索引为默认的数字时,用法同df.iloc),但需要注意的是loc是按索引,iloc参数只接受数字参数
df.ix[[:5],["col1","col2"]]
#返回字段为col1和col2的前5条数据,可以理解为loc和iloc的结合体。
df.at[5,"col1"] #选择索引名称为5,字段名称为col1的数据
df.iat[5,0] #选择索引排序为5,字段排序为0的数据
五 、 数 据 处 理 , 15 个 常 儿 用 法 : 五、数据处理,15个常儿用法: 五、数据处理,15个常儿用法:
df.columns=['a','b','c']
#重命名列名(需要将所有列名列出,否则会报错)
pd.isnull() #检查DataFrame对象中的空值,并返回一个Boolean数组
pd.notnull()
#检查DataFrame对象中的非空值,并返回一个Boolean数组
df.dropna() #删除所有包含空值的行
df.dropna(axis=1)#删除所有包含空值的列
df.dropna(axis=1,thresh=n) #删除所有小于n个非空值的行
df.fillna(value=x)
#用x替换DataFrame对象中所有的空值,支持 df[column_name].fillna(x)
s.astype(float) #将Series中的数据类型更改为float类型
s.replace(1,'one') #用'one'代替所有等于1的值
s.replace([1,3],['one','three'])
#用'one'代替1,用'three'代替3
df.rename(columns=lambdax:x+1) #批量更改列名
df.rename(columns={'old_name':'new_name'}) #选择性更改列名
df.set_index('column_one')
#将某个字段设为索引,可接受列表参数,即设置多个索引
df.reset_index("col1")
#将索引设置为col1字段,并将索引新设置为0,1,2...
df.rename(index=lambdax:x+1) #批量重命名索引
举 例 : 举例: 举例:
原 本 这 里 采 用 d a s k 库 读 取 c s v 文 件 。 因 为 d a s k 库 的 好 处 是 : 1 、 分 块 ; 2 、 并 行 化 计 算 然 而 : 先 尝 试 了 用 p a n d a s 读 取 数 据 , 读 入 整 个 C S V 占 用 内 存 76 M B 。 算 是 比 较 小 的 了 。 鉴 于 其 可 直 接 放 入 内 存 之 中 , 因 此 就 不 需 要 分 块 了 , 因 为 反 而 会 因 为 与 硬 盘 交 互 , 消 耗 C P U 资 源 。 经 过 测 试 , 用 d a s k 读 取 数 据 , 虽 然 可 以 分 块 , 但 需 要 启 动 并 行 化 客 户 端 , 所 以 占 用 内 存 共 490 M B , 而 用 p a n d a s 读 取 , 仅 占 用 了 230 M B , 因 此 , 选 择 p a n d a s 库 。 原本这里采用 dask 库读取 csv 文件。\\因为 dask 库的好处是:1、分块;2、并行化计算\\然而:先尝试了用 pandas 读取数据,\\读入整个 CSV 占用内存 76 MB。算是比较小的了。\\鉴于其可直接放入内存之中,因此就不需要分块了,\\因为反而会因为与硬盘交互,消耗 CPU 资源。\\经过测试,用 dask 读取数据,虽然可以分块,\\但需要启动并行化客户端,所以占用内存共 490 MB,\\而用 pandas 读取,仅占用了 230 MB,\\因此,选择 pandas 库。 原本这里采用dask库读取csv文件。因为dask库的好处是:1、分块;2、并行化计算然而:先尝试了用pandas读取数据,读入整个CSV占用内存76MB。算是比较小的了。鉴于其可直接放入内存之中,因此就不需要分块了,因为反而会因为与硬盘交互,消耗CPU资源。经过测试,用dask读取数据,虽然可以分块,但需要启动并行化客户端,所以占用内存共490MB,而用pandas读取,仅占用了230MB,因此,选择pandas库。
版权声明:本文为CSDN博主「zhuo木鸟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
%%time
df = pd.read_csv(r'../泰迪杯/泰迪杯 A 题/附件/附件2.csv')
df # 可视化头五行数据
数据类型和缺失值
print(df.dtypes) # 查看各行的类型
为何要没事找事,打印出数据类型呢?为了节省内存呀…,这里先按下不表。
再 看 数 据 各 列 的 缺 失 值 数 量 如 何 : 再看数据各列的缺失值数量如何: 再看数据各列的缺失值数量如何:
print(df.isna().sum()) #缺失值计算
看 一 下 有 多 少 数 据 没 有 X X X 看一下有多少数据没有 XXX 看一下有多少数据没有XXX
print(df['XXX'].isna().sum()) #缺失值计算、数量
S e a b o r n 是 P y t h o n 的 数 据 统 计 图 形 库 , 是 k a g g l e 比 赛 中 最 常 用 的 可 视 化 库 ; 是 在 m a t p l o t l i b 基 础 上 进 行 了 高 级 A P I 封 装 , 图 表 装 饰 更 加 容 易 , 可 以 用 更 少 的 代 码 做 出 更 美 观 的 图 ; 高 度 兼 容 了 n u m y 、 p a n d a s 、 s c i p y 等 库 , 使 得 数 据 可 视 化 更 加 方 便 快 捷 。 Seaborn是Python的数据统计图形库,是kaggle比赛中最常用的可视化库;\\是在matplotlib基础上进行了高级API封装,\\图表装饰更加容易,可以用更少的代码做出更美观的图;\\高度兼容了numy、pandas、scipy等库,\\使得数据可视化更加方便快捷。 Seaborn是Python的数据统计图形库,是kaggle比赛中最常用的可视化库;是在matplotlib基础上进行了高级API封装,图表装饰更加容易,可以用更少的代码做出更美观的图;高度兼容了numy、pandas、scipy等库,使得数据可视化更加方便快捷。
1、散点图
函数sns.scatterplot
import seaborn as sns
sns.set()
import matplotlib.pyplot as plt
%matplotlib inline
#小费数据集
tips = sns.load_dataset('tips')
ax = sns.scatterplot(x='total_bill',y='tip',data=tips)
plt.show()
2、条形图
函数sns.barplot
显示数据平均值和置信区间
import seaborn as sns
sns.set()
import matplotlib.pyplot as plt
%matplotlib inline
#小费数据集
tips = sns.load_dataset('tips')
ax = sns.barplot(x='day',y='total_bill',data=tips)
plt.show ()
3、线型图
函数sns.lineplot
#绘制折线图和置信区间
import seaborn as sns
sns.set()
import matplotlib.pyplot as plt
%matplotlib inline
fmri = sns.load_dataset("fmri")
ax = sns.lineplot(x="timepoint", y="signal", data=fmri)
plt.show()
4、箱线图
函数seaborn.boxplot
import seaborn as sns
sns.set()
import matplotlib.pyplot as plt
%matplotlib inline
tips = sns.load_dataset("tips")
ax = sns.boxplot(x="day", y="total_bill", data=tips)
plt.show()
5、直方图
函数seaborn.distplot
import seaborn as snsimport numpy as np
sns.set()
import matplotlib.pyplot as plt
%matplotlib inline
np.random.seed(0)
x = np.random.randn(1000)
ax = sns.distplot(x)
plt.show()
6、热力图
函数 seaborn.heatmap
import numpy as np
np.random.seed(0)
import seaborn as sns
sns.set()
import matplotlib.pyplot as plt
%matplotlib inline
uniform_data = np.random.rand(10,12)
ax = sns.heatmap(uniform_data)
plt.show()
7、散点图矩阵
函数sns.pairplot
import seaborn as sns
sns.set()
import matplotlib.pyplot as plt
%matplotlib inline
iris = sns. load_dataset("iris")
ax = sns.pairplot(iris)
plt.show()
8、分类散点图
函数seaborn.catplot
import seaborn as sns
sns.set()
import matplotlib.pyplot as plt
%matplotlib inline
exercise = sns.load_dataset("exercise")
ax = sns.catplot(x="time", y="pulse", hue="kind", data=exercise)
plt.show()