赞
踩
个人学习笔记,课程为Python数学建模与分析:基础入门、数据处理、算法编程、高级绘图、建模实战!
目录
文中引入的csv文件:
链接:https://pan.baidu.com/s/1NWLzgAir70LQKUxv74lfIg?pwd=d2n5
提取码:d2n5
- import matplotlib.pyplot as plt
- import numpy as np
- import pandas as pd
- import seaborn as sns
- import matplotlib as mpl
- import warnings
- warnings.filterwarnings("ignore")
-
-
- col1 = np. linspace(0, 10,1000)
- col2 = np.sin(col1)
- df = pd.DataFrame({"C1": col1 ,"C2":col2})
- pd.set_option('dispLay.max_columns',None)
- print(df.head(10))
- # Plotting linepLot using sns.lineplot()
- # plt.style.use('seaborn-darkgrid')-----错的
- # 使用 Seaborn 设置主题
- sns.set_theme(style="darkgrid")#替换
- #matplotlib inline
- sns.lineplot(x=df.C1,y=df.C2,data=df)
- plt.show()
- ############################################################################
-
- # 读取数据,不设置特定列为索引
- iris = pd.read_csv('E:\pycharm\pyc\iris.data', header=None)
- pd.set_option('display.max_columns', None)
-
- # 设置列名
- iris.columns = ['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Species']
-
- # 打印前10行数据
- print(iris.head(10))
-
- # 绘制线图
- plt.figure(figsize=(20, 8))
- sns.lineplot(data=iris)
- plt.show()
-
- # #################################################################
- # 选择几个数值列来绘图
- plt.figure(figsize=(20,8))
- plt.plot(iris['SepalLength'], label='Sepal Length')
- plt.plot(iris['SepalWidth'], label='Sepal Width')
- plt.plot(iris['PetalLength'], label='Petal Length')
- plt.plot(iris['PetalWidth'], label='Petal Width')
- plt.legend()
- plt.xlabel('Index') # 由于我们没有设置特定的x轴数据,这里使用默认的索引
- plt.ylabel('Measurement') # y轴表示测量值
- plt.title('Iris Dataset Features') # 图表标题
- plt.show()
- ############################################################################
-
-
- plt.figure(figsize=(20, 8))
- plt.plot(iris['SepalLength'], label='Sepal Length')
- plt.plot(iris['PetalLength'], label='Petal Length')
- plt.legend()
- plt.xlabel('Index') # x轴代表数据的索引
- plt.ylabel('Length (cm)') # y轴代表长度,单位为厘米
- plt.title('Iris Dataset - Sepal and Petal Lengths') # 图表标题
- plt.show()
-
-
- # #############################################################无法运行,缺少文件
- # employment =pd.read_excel('unemployment.xlsx')
- # print(employment.head(10))
- # plt.figure(figsize=(14,7))
- # plt.style.use('seaborn-darkgrid')
- # sns.lineplot(x='Period', y='Unemployed', hue='Gender', data=employment)
- # plt.show()
- # plt.figure(figsize=(14,7))
- # plt.style.use('seaborn-darkgrid')
- # sns.lineplot(x='Period', y='Unemployed', hue='Gender', style='Gender', markers=True, dashes=False, data=employment)
- # plt.show()
- #
- # plt.figure(figsize=(14,7))
- # plt.style.use('seaborn-darkgrid')
- # sns.lineplot(x='Period', y='Unemployed', hue='Gender', style='Gender', err_style='bars', ci=70, data=employment)
- # plt.show()
- #
- # plt.figure(figsize=(14,7))
- # plt.style.use('seaborn-darkgrid')
- # sns.set(rc={'xtick.labelsize':17,'vtick.labelsize':10,'axes.labelsize':15, 'axes .grid':False})
- # sns.lineplot(x='Period', y='Unemployed', hue='Gender', style='Gender',data=employment, dashes=False, palette='CMRmap',markers=['o','>'])
- # plt.show()
- #
- #
- # plt.figure(figsize=(14,7))
- # plt.style.use('seaborn-darkgrid')
- # plt.gcf().text(.2,.84,'GENDER', fontsize=40, color='Black')
- # sns.lineplot(x='Period', y='Unemployed', hue='Gender', style='Gender',data=employment, dashes=False, palette='CMRmap',markers=['o','>'])
- # plt.show()
-
- import numpy as np
- import pandas as pd
- import seaborn as sns
- import matplotlib as mpl
- import warnings
- from matplotlib import pyplot as plt
-
- warnings.filterwarnings("ignore")
- sns.set_style("white")
-
- names = ['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'class']
- iris = pd.read_csv('E:\pycharm\pyc\iris.data', names=names)
- # shade=True 表示填充区域下方,cmap='Reds' 设置颜色映射为蓝色系,shade_lowest=True 表示填充最低密度区域
- sns.kdeplot(data=iris, x='SepalWidthCm', y='SepalLengthCm', shade=True, cmap='Blues', shade_lowest=True)
- plt.show()
- # sns.swarmplot 用于绘制分类数据的分布,其中每个类别的值以点云的形式表示。
- # figsize 参数控制图形的大小(宽度和高度)。
- plt.figure(figsize=(7, 7)) # 创建新的图形窗口
- sns.swarmplot(x='class', y='PetalWidthCm', data=iris)
- plt.show()
- import numpy as np
- import pandas as pd
- import seaborn as sns
- import matplotlib as mpl
- import warnings
- from matplotlib import pyplot as plt
-
- warnings.filterwarnings("ignore")
- sns.set_style("white")
-
- names = ['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'class']
- iris = pd.read_csv('E:\pycharm\pyc\iris.data', names=names)
- # 创建一个新的图形窗口,并设置其大小为7x7英寸
- plt.figure(figsize=(7, 7))
- # palette='Set2': 这设置了小提琴图的颜色方案,使用了名为'Set2'的调色板。
- # dodge=False: 这个参数决定是否将小提琴图的边缘分开。设置为False表示不分开。
- sns.violinplot(x="class", y="PetalWidthCm", data=iris, palette='Set2', dodge=False)
- plt.show()
- import pandas as pd
- import seaborn as sns
- import matplotlib as mpl
- import warnings
- from matplotlib import pyplot as plt
-
- warnings.filterwarnings("ignore")
- sns.set_style("white")
-
- names = ['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'class']
- iris = pd.read_csv('E:\pycharm\pyc\iris.data', names=names)
- iris1 = iris[iris['class'].isin(['Iris-setosa', 'Iris-versicolour', 'Iris-virginica'])]
- # marker='*': 这个参数指定了散点的标记符号)
- sns.regplot(x=iris1.SepalLengthCm, y=iris1.SepalWidthCm, color='#FF6600', marker='*')
- plt.show()
- #logx=True: 这个参数指定了在 x 轴上使用对数刻度。
- #回归线样式:'alpha' 设置了线条的透明度为 0.8,'lw' 设置了线条的宽度为 3。
- #sns.lmplot(x='bmi',y='charges', hue='smoker', data=insurance, height=8, aspect=1.2)
- #lmplot 是一个强大的工具,可用于快速分析和可视化两个变量之间的关系
- sns.regplot(x=iris1.SepalLengthCm, y=iris1.SepalWidthCm, logx=True, line_kws={'color':'#FF5722', 'alpha':0.8, 'lw':3})
- plt.show()
- # import matplotlib.pyplot as plt
- # import numpy as np
- # import pandas as pd
- # import seaborn as sns
- # import matplotlib as mpl
- # import warnings
- # warnings.filterwarnings("ignore")
- # sns.set_style('white')
- #
- # ######################################################缺少文件,无法运行
- # employment = pd.read_excel(r'D:\桌面\shumo\newdata\data\unemployment-rate-1948-2010.xls')
- # sns.relplot(x='Period', y='value', hue='Gender', data=employment, height=7, aspect=2)
- # plt.show()
- #
- #
- # insurance =pd.read_csv('insurance.csv')
- # print(insurance.head(10))
- # sns.relplot(x='bmi',y='charges', hue='smoker',data=insurance,height=8,aspect=1)
- # plt.show()
- # sns.relplot(x='Period', y='Unemployed', hue='Gender', col='Age', kind='line',data=employment,height=6, aspect=1,col_wrap=4,linewidth=2)
- # plt.show()
- #
- # sns.relplot(x='bmi',y='charges',hue='sex',col='sex',row='region',data=insurance,height=8,aspect=1)
- # plt.show()
- #
- # sns.relplot(x='bmi', y='charges', hue='sex', col='sex', row='region',data=insurance,height=7,aspect=.6)
- # plt.show()
-
-
- import numpy as np
- import pandas as pd
- import seaborn as sns
- import warnings
- import matplotlib.pyplot as plt
-
- warnings.filterwarnings("ignore")
- sns.set_style("white")
-
- # 读取CSV文件
- employment = pd.read_csv('E:\pycharm\pyc\housing.csv')
-
- # 绘制关系图
- # 假设我们想要探索房价(MEDV)与房屋年龄(AGE)之间的关系,并根据房间数(RM)来区分颜色
- sns.relplot(x='AGE', y='MEDV', hue='RM', data=employment, height=7, aspect=2)
- plt.show()
-
-
- """
- # 使用seaborn的relplot函数绘制关系图
- # 注意:以下参数和注释已经根据实际的代码和数据集进行了调整
- sns.relplot(
- x='AGE', # x轴上的数据列名,这里是房屋年龄
- y='MEDV', # y轴上的数据列名,这里是中位数房价
- hue='RM', # 根据这个列的值来区分不同的颜色,这里是房间数
- # col='Age', # 这行被注释掉了,因为原始数据中没有'Age'列,且'col'参数不能重复指定
- # kind='line', # 这行也被注释掉了,因为relplot默认是散点图,且对于AGE和MEDV的关系,散点图更合适
- # col='sex', # 这行被注释掉了,因为原始数据中没有'sex'列
- # row='region', # 这行被注释掉了,因为原始数据中没有'region'列
- data=employment, # DataFrame的名称,这里包含波士顿房价数据的DataFrame名为employment
- height=7, # 每个子图的高度(英寸),这里保持为7
- aspect=2, # 子图的宽高比,这里设置为2
- # col_wrap=4, # 这行被注释掉了,因为没有使用col参数来创建子图
- # linewidth=2, # 这行也被注释掉了,因为默认绘制的是散点图,不是折线图
- ) # 注意这里添加了闭合的括号
- """
- import pandas as pd
- import seaborn as sns
- import matplotlib as mpl
- import warnings
- from matplotlib import pyplot as plt
-
- warnings.filterwarnings("ignore")
- sns.set_style("white")
-
- names = ['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'class']
- iris = pd.read_csv('E:\pycharm\pyc\iris.data', names=names)
- print(iris.head())
- # 从原始的 iris 数据集中筛选出包含 'Iris-setosa'、'Iris-versicolour' 和 'Iris-virginica' 类别的数据
- iris1 = iris[iris['class'].isin(['Iris-setosa', 'Iris-versicolour', 'Iris-virginica'])]
- sns.pairplot(iris1, hue='class', palette='husl', size=2) # size=2 设置了每个子图的大小
- # vars=['SepalLengthCm','SepalWidthCm','PetalLengthCm']: 这个参数指定了要在散点图矩阵中展示的特征列
- # height=3: 这个参数设置了每个子图的高度为 3。
- # aspect=1: 这个参数设置了每个子图的宽高比为 1,即正方形。
- sns.pairplot(iris1,hue='class',vars=['SepalLengthCm','SepalWidthCm','PetalLengthCm'],height=3, aspect=1)
- plt.show()
- import matplotlib.pyplot as plt
- import numpy as np
- import pandas as pd
- import seaborn as sns
- import matplotlib as mpl
- import warnings
- warnings.filterwarnings("ignore")
- # 基本知识
- # 生成一个正态分布的随机数组,均值为1,标准差为10,样本数量为1000
- mpl.rcParams.update(mpl.rcParamsDefault)
- num = np.random.normal(1,10,1000)
- sns.distplot(num)
- plt.show()
-
- sns.displot(num, kde=False) # 直方图,不带KDE 没有核密度估计
- plt.show()
-
- sns.displot(num, kde=True) # 直方图,不带KDE 有核密度估计
- plt.show()
-
- housing = pd.read_csv('E:\pycharm\pyc\housing.csv')
- print(housing.head())
- plt.show()
- # bins=40:这个参数表示将数据分成40个区间
- # figsize=(20,20):这个参数设置图形的大小 单位是英寸
- housing.hist(bins=40, figsize=(20, 20))
- plt.show()
-
- #多个图 三行三列
- fig1 ,axes = plt.subplots(nrows=3,ncols=3 ,figsize = (20,20))
- #ax=axes[0, 0]: 这指定了要在哪个子图上绘制直方图。axes是一个二维数组,代表多个子图,这里我们选择了第一个子图(索引为[0, 0])
- #kde=False: 这个参数决定是否在直方图上绘制核密度估计曲线。设置为False表示不绘制。
- sns.distplot(housing["CRIM"], color="#00bcd4",ax=axes[0, 0] , kde=False , bins=20)
- sns.distplot(housing["ZN"], color="#937d14",ax=axes[0, 1], kde=False ,bins=20)
- sns.distplot(housing["INDUS"], color="#006600", ax=axes[0, 2],kde=False, bins=20)
- sns.distplot(housing["CHAS"] , color="#ff1e56", ax=axes[1,0], kde=False ,bins=20)
- sns.distplot(housing["NOX"],color="#216353",ax=axes[1, 1], kde=False,bins=20)
- sns.distplot(housing["RM"], color="#FF8F00", ax=axes[1,2],kde=False ,bins=20)
- sns.distplot(housing["AGE"], color="#33FF00", ax=axes[2, 0], kde=False,bins=20)
- sns.distplot(housing["DIS"], color="#FF3300", ax=axes[2, 1], kde=False,bins=20)
- sns.distplot(housing["RAD"], color="#cccc00", ax=axes[2, 2],kde=False,bins=20)
- plt.show()
- import numpy as np
- import pandas as pd
- import seaborn as sns
- import matplotlib as mpl
- import warnings
- from matplotlib import pyplot as plt
- warnings.filterwarnings("ignore")
- sns.set_style("white")
- housing = pd.read_csv('E:\pycharm\pyc\housing.csv')
- """
- sns.boxplot(x=insurance.smoker, y=insurance.charges, orient=['no', 'yes']): 这行代码绘制了一个分组的箱线图,
- 展示了不同吸烟者类别('no'和'yes')下的健康保险费用分布情况。其中,x参数指定了分组依据的列(即吸烟者类别),
- y参数指定了要展示的数据列(即健康保险费用),orient参数指定了分组的方向(这里设置为['no', 'yes'])。
- """
- sns.boxplot(housing.B) #展示housing.csv中B列的箱线图
- plt.show()
- import pandas as pd
- import seaborn as sns
- import matplotlib as mpl
- import warnings
- from matplotlib import pyplot as plt
-
- warnings.filterwarnings("ignore")
- sns.set_style("white")
-
- names = ['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm', 'class']
- iris = pd.read_csv('E:\pycharm\pyc\iris.data', names=names)
- # kind='reg' 参数表示在图中添加一个回归线
- # edgecolor='w'参数表示散点的边框颜色为白色。
- # s=90参数表示散点的大小为90
- # kind='hex'
- sns.jointplot(x='SepalLengthCm', y='SepalWidthCm', data=iris, height=10, kind='reg', color='#FF6600')
- plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。