pandas_matplot_seaborn 朱雀 2021-11-23 16:52 273阅读 0赞 import pandas as pd #import matplotlib #unrate= pd.read_csv("unrate.csv") # 把时间格式 1948/1/10 转化为 1948-01-10 #unrate["DATE"] = pd.to_datetime(unrate['DATE']) #折线图 import matplotlib.pyplot as plt import seaborn as sns import numpy as np import pandas as pd from scipy import stats, integrate import matplotlib.pyplot as plt import matplotlib as mpl titannic = sns.load_dataset("titanic") tips = sns.load_dataset("tips") iris =sns.load_dataset('iris') ''' admission = pd.read_csv(admissions.csv") admission_t = admission[0:12] plt.plot(admission_t['gpa'],admission_t['gre']) #画出图形 plt.xticks(rotation = 25) #改变x轴标记名的角度 #添加轴标题 plt.xlabel("hello") plt.ylabel("world") #添加标题 plt.title("hello world") #plt.show() fig = plt.figure(figsize=(3,3)) #默认画图区间 #ax1 = fig.add_subplot(2,2,1) #2,2代表矩阵大小 1 代表位置 #ax2 = fig.add_subplot(2,2,2) #ax4 = fig.add_subplot(2,2,4) plt.show() unrate=pd.read_csv("admissions.csv") fig = plt.figure(figsize = (10,6)) colors = ['red','green',"blue","orange",'black'] for i in range(5): start_index = i*12 end_index = (i+1)*12 subset = unrate[start_index: end_index] label = str(1958+i) #右上角的提示框 plt.plot(subset["gpa"],subset["gre"],c = colors[i],label = label) plt.legend(loc = 'best') #定义提示图标的位置 plt.show() #柱子行图 from numpy import arange #先要获取每个柱子的高度数据,在获取横坐标的数据 reviews = pd.read_csv(".csv") #获得文件对象DataForm cols = ['FILM','RT_usr_norm','IMDB_norm'] norm_recives = reviews[cols] # Serise num_cols = ['frist',"second",'third', 'four','five'] bar_height =norm_recives.ix(0,num_cols).values #柱形图高度 bar_positions = arange(5)+ 0.75 #柱形图的位置 fig,ax = plt.subplots() ax.bar = (bar_positions,bar_height,0.3) #0.3代表柱子的宽度把柱形图放到窗口上 #plt.show() #库 DATa Form Series #ax 图形操作 # fig, ax = plt.subplots() ax.hist(norm_recives) #加载文件 recive_csv = pd.read_csv("cleaned_loans2007.csv") #cols = ['clo1','col2','col3','col4'] #correct_csv = recive_csv[cols] fig , ax = plt.subplots() ax.hist(recive_csv['revol_bal']) #给出列名 # 统计相同值的个数的分布区间并用柱形图表示出来 plt.show() #data visualzation #画图 导入包 #%matplotlib inline def sinplot(flip=1): x = np.linspace(0,14,100) #在区间(0,14)找到100个点 for i in range(1,7): #画6条线 plt.plot(x,np.sin(x+i*5)*(7-i)*flip) #计算每个点的高度,并画在视图上 plt.show() #sinplot()#函数调用 #seaborn设置主题风格: #sinplot() sns.set_style('whitegrid') data = np.random.normal(size =(20,6)) #+np.arange(6)/2 #正态分布的概率密度函数 # 20行6 列的 二维数组 print(data.shape) print(data) sns.boxplot(data = data) #加载数据 #plt.show() #把试图显示出来 #sns.set_style('ticket') #带短线段 print(help(np.linspace)) #sinplot() 调用函数 dd = np.linspace(0,5,100) #随机生成0 到5 之间的100个数 并排序 print(type(dd)) print(dd) import numpy as np N = 8 y = np.zeros(N) #初始化一个包含8个0的np.array print(y) x1 = np.linspace(0, 10, N, endpoint=True) #生成8个x 轴坐标 print(x1) x2 = np.linspace(0, 10, N, endpoint=False) print(x2) plt.plot(x1, y, 'o') #画第一个 plt.plot(x2, y + 0.5, 'o') #画图 plt.ylim([-0.5, 1]) plt.show() sns.set_style() #设置风格 sns.despine(left = True) with sns.axes_style('darkgrid'): plt.subplot(211) #对子图设风格的设置 sinplot() sns.set_context("paper") plt.figure(figsize = (8,6)) hls 颜色空间 current = sns.color_palette() set_palette() 指标 #sns.set(rc={"figure.figsize":(6,6)}) current = sns.color_palette() sns.palplot(sns.color_palette('hls',8)) #改变主题颜色 #离散性 连续性的 #data = np.random.normal(size=(20,8))+np.arange(8)/2 #sns.boxplot(data = data,palette=sns.color_palette('hls',4)) #展示数据试图类型颜色 #颜色种类 l 亮度 是 饱和度 #sns.color_palette('hls',8,l=7,s=9) plt.plot([0.1],[0.1],sns.xkcd_rgb['pale red'],lw=3) plt.show() sns.palplot(sns.color_palette("Blue"))#渐变 sns.palplot(sns.color_palette("Blue_r"))#渐变由深到前 sns.palplot(sns.cubechelix_palette(8,start=5,rot=-75)) sns.palplot(sns.light_palette("green"))#渐变 x,y = np.random.multivariate_normal([0,0],[[1,-5],[-5,1]],size = 300).T print(x,y) pal = sns.dark_palette("red",as_cmap = True) # 画火山图 sns.kdeplot(x,y,cmap = pal)# 把位置 和颜色传进来 plt.show() 当拿到数据后分析单变量单特征分析 数据是由特征组成,把特征的分布情况了解清楚 sns.set(color_codes= True) aa = np.random.seed(sum(map(ord,"distributions"))) print(type(aa)) print(aa) x = np.random.normal(size = 100) #生成高斯数据 #kde核密度估计 高斯伦布 bins 切分20个等份 查看分布状态 fit x = np.random.gamma(6,size = 200) #方图 sns.distplot(x,kde=False,fit=stats.gamma)#生成方形图 plt.show() #均值 协方差 数据特征和特征之间的关系 用散点图 单特征用方图 mean,cov = [0,1],[(1,.5),(.5,1)] data = np.random.multivariate_normal(mean,cov,200)#生成二维数据 df = pd.DataFrame(data,columns=['x','y'])#生成DataFrame格式数据 #散点图方法 sns.jointplot(x='x',y='y',data=df) #生成散点图 plt.show() mean,cov = [0,1],[(1,.5),(.5,1)] x,y = np.random.multivariate_normal(mean,cov,1000).T #加上.T 转化为元祖 with sns.axes_style('white'): #设计风格 king 指定图形类型为hex图 sns.jointplot(x=x,y=y,kind = 'hex',color = 'k') plt.show() 数据量小用 散点图 数据量打用hex图 #四个特征 两两特征对比 iris = sns.load_dataset('iris') # 特征和特征之间的可视化显示 sns.pairplot(iris) plt.show() 绘制回归线型图 regplot() tips= sns.load_dataset('tips') print(tips.head()) # 指标x 与指标y 的关系 #sns.regplot(x='total_bill',y='tip',data=tips) #数据抖动 sns.regplot(data = tips,x='size',y = 'tip',x_jitter=.05) plt.show() #strip类型图 #sns.stripplot(y = 'day',x='total_bill',data = tips,jitter=False) #圣诞树类型的图 #sns.swarmplot(x ='day',y= 'total_bill',data = tips) #盒图 IQR 统计学四分位距 第四分之一和四分之三位之间的距离 #N = 1.5IQR 如果一个值> Q3+n 或者 < Q1-N 则称为离群点 #sns.boxplot(x='day',y = 'total_bill',hue = 'time',data = tips) #梯形图 #sns.violinplot(y = 'total_bill',x ='day',hue = 'time',data = tips,split= True) #alpha = True #透明度 #柱形图 #sns.barplot(x = 'sex',y='survived',hue="class",data = titannic) #点图 sns.pointplot(x = 'sex',y = 'survived',hue = 'class',data = titannic,palette={'male':'g','female':'m'},markers = ['^','o'],linestyles = ['-','--']) #sns.pointplot(x = 'sex',y = 'survived',hue= 'class',data = titannic,palette={'male':'g','female':'m'},markers = ['^','o'],linestyles = ['-','--']) #多层图 sns.factorplot(x = 'day',y = 'total_bill',kind = "多型图") ''' #g = sns.FacetGrid(tips,col = 'time',hue = 'smoker') #实例化一个 FactGrid对象 # plt.hist 条形图 #g.map(plt.hist,'tip') #散点图 #g.map(plt.scatter,'total_bill','tip',alpha = 7) #指定画图顺序: from pandas import Categorical ordered_days = tips.day.value_counts().index ordered_days = Categorical(['Thur','Tri','Sat','Sun']) #('指定新的排序方式') g = sns.FacetGrid(tips,row = 'day',row_order= ordered_days,size = 7,aspect= 4)#创建一个FacetGrip对象 g.map(sns.boxplot,'total_bill') #指定画图方式 和数据 plt.show()#让图片显示出来 转载于:https://www.cnblogs.com/countryboy666/p/11223460.html
还没有评论,来说两句吧...