当前位置: 首页 > news >正文

Pandas -----------------------基础知识(八)

Pandas内置Matplotlib

加载数据

import pandas as pdanscombe = pd.read_csv('/root/pandas_code_ling/data/e_anscombe.csv')
anscombe

dataset_1 = anscombe[anscombe['dataset']=='I']
dataset_1dataset_1.describe()

提供数据

dataset_1 = anscombe[anscombe['dataset']=='I']
dataset_2 = anscombe[anscombe['dataset']=='II']
dataset_3 = anscombe[anscombe['dataset']=='III']
dataset_4 = anscombe[anscombe['dataset']=='IV']

画布

import matplotlib.pyplot as plt# 创建画布
fig = plt.figure(figsize=(16,8))# 向画布添加子图
#子图有两行两列,位置是1
axes1 = fig.add_subplot(2,2,1)
#子图有两行两列,位置是2
axes2 = fig.add_subplot(2,2,2)
#子图有两行两列,位置是3
axes3 = fig.add_subplot(2,2,3)
#子图有两行两列,位置是4
axes4 = fig.add_subplot(2,2,4)

绘图

axes1.plot(dataset_1['x'],dataset_1['y'],'o')
axes2.plot(dataset_2['x'],dataset_2['y'],'o')
axes3.plot(dataset_3['x'],dataset_3['y'],'o')
axes4.plot(dataset_4['x'],dataset_4['y'],'o')axes1.set_title('dataset_1')
axes2.set_title('dataset_2')
axes3.set_title('dataset_3')
axes4.set_title('dataset_4')fig.suptitle('Anscombe Data')
fig

pandas绘图

import pandas as pd
import matplotlib.pyplot as plt# 加载 anscombe数据
anscombe = pd.read_csv('/root/pandas_code_ling/data/e_anscombe.csv')df1 = anscombe[anscombe['dataset']=='I']
df2 = anscombe[anscombe['dataset']=='II']
df3 = anscombe[anscombe['dataset']=='III']
df4 = anscombe[anscombe['dataset']=='IV']print(df1)
print('-------------------------------------')df1.plot()  # 默认折线图
print('-------------------------------------')
df1['x'].plot.bar()# df.plot.line() # 折线图的全写方式
# df1.plot.bar() # 柱状图
# df.plot.barh() # 横向柱状图 (条形图)
# df.plot.hist() # 直方图
# df.plot.box() # 箱形图
# df1.plot.kde() # 核密度估计图
# df.plot.density() # 同 df.plot.kde()
# df1.plot.area() # 面积图
# s.plot.pie() # 饼图
# df.plot.scatter() # 散点图
# df.plot.hexbin() # 六边形箱体图,或简称六边形图
plt.rcParams["font.sans-serif"]=["SimHei"] 
plt.title('统计图')
plt.show()

df1.plot() # 默认折线图
#df1.plot(kind='line') # 结果与df1.plot()
#df1.plot.line() # 结果与df1.plot()
# x轴是索引值,y轴是各列的具体值
# 也可以通过参数指定xy轴对应的列名
df1.plot.line(x='x', y='y')
plt.show()

df1.plot.bar() # 柱状图
df1.plot.bar(stacked=True) # 柱状堆积
# 也可以通过参数指定xy轴对应的列名
df1.plot.bar(x='x', y='y')
plt.show()

df1.plot.barh() # 水平条形图
df1.plot.barh(stacked=True) # 水平条形堆积图
# 也可以通过参数指定xy轴对应的列名
df1.plot.barh(x='x', y='y')
plt.show()

# 饼图,只能展示一维数据
# 参数y指定列名
# 参数autopct='%.2f%%'指定显示百分比 %.2f%%表示保留2位小数
# 参数radius=0.9 指定饼图直径的比例,最大为1
# 参数figsize=(16, 8) 设定图片大小
df1.plot.pie(y='x', autopct='%.2f%%', radius=0.9, figsize=(16, 8)) 
plt.show()

# 饼图,只能展示一维数据
# 参数y指定列名
# 参数autopct='%.2f%%'指定显示百分比 %.2f%%表示保留2位小数
# 参数radius=0.9 指定饼图直径的比例,最大为1
# 参数figsize=(16, 8) 设定图片大小
df1.plot.pie(y='x', autopct='%.2f%%', figsize=(16, 8)) 
plt.show()

# 指定xy轴,grid=True开启背景辅助线
df1.plot.scatter(x='x', y='y', grid=True ,s=df1['x']*100)
plt.show()

df1.boxplot()
# df1.plot.boxplot() # 报错
plt.show()

df1['x'].plot.hist(bins=10)
plt.show()

# gridsize=12设定蜂箱格子的大小,数字越小格子越大
df1.plot.hexbin(x='x', y='y', gridsize=12)
plt.show()

seaborn图表

加载数据

# 导包
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns # Anaconda内置,无需额外安装
# 加载数据
tips_df = pd.read_csv('/root/pandas_code_ling/data/f_tips.csv')
tips_df

tips_df
#%%
# 指定数据集,指定x轴为消费订单金额,y轴为消费金额,
# 散点图通用的可选参数 hue='sex'通过颜色指定分组
# 散点图通用的可选参数 style='smoker' 通过形状指定分组
# 散点图通用的可选参数 size='time' 通过大小指定分组
sns.scatterplot(data=tips_df, x='total_bill', y='tip', hue='sex', style='smoker', size='time'
)
plt.show()

plt.show()
#%%
plt.show()
sns.relplot(data=tips_df, x='total_bill', y='tip')  # 默认 kind='scatter'
sns.relplot(data=tips_df, x='total_bill', y='tip', kind='line')
plt.show()

f = plt.figure()
f.add_subplot(2,1,1)
# 按照x属性所对应的类别分别展示y属性的值,适用于分类数据
# 不同饭点的账单总金额的散点图
sns.stripplot(data=tips_df, x='time', y='total_bill')f.add_subplot(2,1,2)
# hue通用参数按颜色划分
# jitter=True 当数据点重合较多时,尽量分散的展示数据点
# dodge=True 拆分分类
sns.stripplot(data=tips_df, x='time', y='total_bill', jitter=True, dodge=True, hue='day')
plt.show()

# 下图分别描述午餐账单、晚餐账单的最大值、最小值、三个四分位数,以及所有账单金额出现的次数(频率)
sns.violinplot(data=tips_df, x='time', y='total_bill')
plt.show()

plt.show()
# 下图中黑色的粗线条展示了数据的分布(误差线), 线条越短, 数据分布越均匀
# 下图中每个柱的顶点就是该分类y指定列的平均值
sns.barplot(data=tips_df, x='day', y='total_bill')
plt.show()

# 下图分别描述午餐账单、晚餐账单的最大值、最小值、三个四分位数,以及所有账单金额出现的次数(频率)
sns.violinplot(data=tips_df, x='day', y='total_bill')
plt.show()

plt.show()
# 按x指定的列值分组统计出现次数
sns.countplot(data=tips_df, x='day')
plt.show()

plt.show()
# 男女在午餐晚餐的平均消费
new_df = tips_df.pivot_table(index='sex', columns='time', values='total_bill', aggfunc='mean')
print(new_df)
# 输出为热力图:男性在晚餐花费最多
sns.heatmap(data=new_df)
plt.show()

plt.show()
sns.pairplot(tips_df)
# sns.pairplot(df) # 全部数值列进行两两组合
# sns.pairplot(df, vars=['列名1', '列名2']) # 指定要组合展示的列名
plt.show()


http://www.mrgr.cn/news/44604.html

相关文章:

  • 苍穹外卖学习笔记(十六)
  • getattr()内置函数
  • 【操作系统考研】2进程管理(1)
  • 看诊新助手,语音转文字技术,让病历记录更贴心
  • c++和c语言的区别
  • OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(上)
  • 国标GBT28181详解:第三方呼叫控制的实时视音频点播流程详解(国标GB/T28181-2022 )
  • MySQL多表查询:标量子查询
  • 强化-微分
  • 面向对象编程【JavaScript】
  • 基于PHP的校园二手书交易管理系统
  • 计算机毕业设计 基于Python的豆果美食推荐系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
  • 每日英语听力 Day13
  • 备战大数据比赛:个人经验与实战技巧分享
  • LeetCode题练习与总结:移动零--283
  • 二维数组的旋转与翻转(C++)(上(这只是简单讲解))
  • 开源项目带来的思考
  • 修改 MySQL 数据库中的唯一键
  • Oracle登录报错-ORA-01017: invalid username/password;logon denied
  • 推荐一款强大的书签管理工具,让你的网址不在落灰