Python小记

Python数据处理

pd.set_option('display.max_columns',None)	# 全部列打印
pd.set_option('display.max_rows',None)			# 全部行打印

DataFrame合并与拼接

纵向合并 变量名要完全相同 支持多表合并

pd.concat([df1,df2], keys = ['df1','df2']).reset_index().drop(labels='level_1',axis=1).rename(columns={'level_0':'class'})

横向合并 on用来指定拼接的公共列

pd.merge(left=df1,right=df2,how=left,left_on='ID',right_on='id')

或者进行转置后纵向合并再转置回来就好了 可以避免没有公共列的问题

pd.concat([df1.T,df2.T].T

数据可视化

plt.rcParams['font.sans-serif']=['SimHei']    # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False    # 用来正常显示负号

R语言绘图风格

plt.style.use('ggplot')

离散型数据

1.饼图

pie(x,explode= None,labels=None,color=None,autopct=None,pctdistance=0.6,labeldistance=1.1)

x:指定绘图的数据
explode:指定饼图某些部分的突出显示,即呈现爆炸式。
labels:为饼图添加标签说明,类似于图例说明
colors:指定饼图的填充颜色
autopct:自动添加百分比的显示,可以采用格式化的方法显示
pctdistance:设置百分比标签与圆心的距离
labeldistance:设置各扇形标签(图例)与圆心的距离

画正圆

plt.axes(aspect = 'equal')

例:

#导入第三方库
import matplotlib.pyplot as plt

#解决显示中文标签问题 字体显示简体黑  SimHei
plt.rcParams['font.sans-serif']=['SimHei']

#构造数据
edu= [0.2515,0.3724,0.3336,0.0368,0.005]
labels = ['中专','大专','本科','硕士','其他']
explode=[0,1,0,0,0]

#绘制饼图
plt.pie(x=edu,explode=explode,labels=labels,autopct='%.1f%%')

plt.show()

2.条形图

bar(x,height,width=0.8,bottom=None,color=None,edgecolor=None,tick_label=None,label=None,ecolor=None)
barh(y,height,width=0.8,bottom=None,color=None,edgecolor=None,tick_label=None,label=None,ecolor=None)

x:传递数值的序列,指定条形图中x轴上的刻度值。
height:传递数值序列,指定条形图y轴上的高度
width:指定条形图的宽度,默认是0.8
bottom:用于绘制堆叠条形图
color:用于指定条形图的填充颜色
edgecolor:指定条形图边框色
tick_label:指定条形图的刻度标签
label:指定条形图的标签,一般用以添加图例

例:

import pandas as pd
import matplotlib.pyplot as plt
GDP = pd.read_excel('第8章 数据可视化\Province GDP 2017.xlsx')
plt.style.use('ggplot')#背景为网格状
print(GDP)
plt.bar(
   x=range(GDP.shape[0]),#x轴刻度
   height = GDP.GDP,
   tick_label = GDP.Province,#给x轴添加标签
   color ='red'
)
plt.ylabel('GDP(万亿)')
plt.title('2017年度6省份GDP分布')
#为每个条形图添加数值标签
for x,y in enumerate(GDP.GDP):
  plt.text(x,y+0.1,'%s'%round(y,0),horizontalalignment='center')
plt.show()

在这里插入图片描述

import pandas as pd
import matplotlib.pyplot as plt
GDP = pd.read_excel(r'E:\pylean\database\第8章 数据可视化\Province GDP 2017.xlsx')
GDP.sort_values(by="GDP",inplace=True)
plt.style.use('ggplot')#背景为网格状
print(GDP)
plt.barh(
   y=range(GDP.shape[0]),#y轴刻度
   width = GDP.GDP,
   tick_label = GDP.Province,#给x轴添加标签
   color ='red'
)
plt.ylabel('GDP(万亿)')
plt.title('2017年度6省份GDP分布')
#为每个条形图添加数值标签
for y,x in enumerate(GDP.GDP):
   plt.text(x+0.1,y,'%s'%round(x,1),va='center')
plt.show()

在这里插入图片描述

import pandas as pd
import matplotlib.pyplot as plt
HuRun = pd.read_excel(r'E:\pylean\database\第8章 数据可视化\HuRun.xlsx')
print(HuRun)
print(HuRun_reshape)
HuRun_reshape = HuRun.pivot_table(index='City',columns='Year',values='Counts').reset_index()
HuRun_reshape.sort_values(by=2016,ascending=False,inplace=True)
HuRun_reshape.plot(x='City',y=[2016,2017],kind='bar',color=['red','blue'],rot=0,width=0.8,title="近两年5城市亿万资产家庭数比较")
#添加y轴标签
plt.ylabel('亿万资产家庭数')
plt.xlabel('')
plt.show()

在这里插入图片描述

3.直方图

plt.hist(x,bins=10,normed=False,orientation='vertical',color=None,label=None)

x:指定要绘制的直方图的数据
bins:指定直方图条形个数
normed:是否将直方图的频数转换成频率
orientation:设置直方图的摆放方向,默认是垂直方向。
color:设置直方图的填充色
edgecolor:设置直方图的边框色
label:设置直方图的标签,可通过legend展示其图例

例:

import pandas as pd
import matplotlib.pyplot as plt

Titanic = pd.read_csv(r'E:\pylean\database\第8章 数据可视化\titanic_train.csv')
#print(Titanic)
#检查年龄是否有缺失,如果有使用any()返回True
any(Titanic.Age.isnull())
#可以选择删除有缺失的年龄数据
Titanic.dropna(subset=['Age'],inplace=True)
plt.hist(
   x=Titanic.Age,
   bins=20,
   color='red',
   edgecolor='black'
)
#添加x轴和y轴的标签
plt.xlabel('年龄')
plt.ylabel('统计')
plt.title('乘客年龄分布')
plt.show()

在这里插入图片描述

plt.boxplot(x, vert=None, whis=None, patch artist= None, meanline =None,
showmeans= None, showcaps = None, showbox= None, showfliers=None,boxprops = None, labels= None, flierprops= None, medianprops-None,meanprops =None, capprops =None, whiskerprops= None)

X:指定要绘制箱线图的数据
vert:是否需要将箱线图垂直摆放,默认垂直摆放
whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差
patch artist: bool类型参数,是否填充箱体的颜色;默认为False
meanline: bool类型参数,是否用线的形式表示均值,默认为False
showmeans: bool类型参数,是否显示均值,默认为False
showcaps: bool类型参数,是否显示箱线图顶端和末端的两条线(即上下须)默认为True
showfliers:是否显示身常值,默认为True
boxprops:设置箱体的属性,如边框色,填充色等
labels:为箱线图添加标签,类似于图例的作用
filerprops:设置异常值的属性,如异常点的形状、大小、填充色等medianprops:设置中位数的属性,如线的类型、粗细等
meanprops:设置均值的属性,如点的大小、颜色等
capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等whiskerprops:设置须的属性,如颜色、粗细、线的类型等

例:

Sec Buildings = pd.read_excel('sec_buildings.xlsx')

#绘制箱线图
plt.boxplot(x = Sec Buildings.price unit, #指定绘图数据
patch artist=True, #要求用自定义颜色填充盒形图,默认白色填充
showmeans=True, #以点的形式显示均值
boxprops = {'color':'black','facecolor': 'steelblue'},#设置箱体属性,如边框色和填充色
#设置异常点属性,如点的形状、填充色和点的大小
flierprops = {'marker':'o', 'markerfacecolor': 'red', 'markersize':3,'makeredgecolor':'red'},
#设置均值点的属性,如点的形状、填充色和点的大小
meanprops = {'marker':'D',' markerfacecolor':'indianred', 'markersize':4},
#设置中位数线的属性,如线的类型和颜色
medianprops = {'linestyle':'--', color':'orange'}
labels =[''] #删除x轴的刻度标签,否则图形显示刻度标签为1
)
#添加图形标题
plt.title('二手房单价分布的箱线图')

#显示图形
plt.show()

在这里插入图片描述

折线图

plt.plot(x, y, linestyle, linewidth, color, marker, markersize, markeredgecolor,
markerfactcolor, markeredgewidth, label, alpha)

x:指定折线图的x轴数据
y:指定折线图的y轴数据
linestyle:指定折线的类型,可以是实线、虚线、点虚线、点点线等,默认为实线linewidth:指定折线的宽度
marker: 可以为折线图添加点,该参数是设置点的形状
markersize:设置点的大小
markeredgecolor:设置点的边框色
markerfactcolor:设置点的填充色
markeredgewidth:设置点的边框宽度
label:为折线图添加标签,类似于图例的作用

#数据读取
wechat = pd. read_ excel (r’wechat. xlsx' )

#绘制单条折线图
plt.plot (wechat.Date, #x轴数据
wechat.Counts, #y轴数据
linestyle = '一', #折线类型
linewidth = 2, #折线宽度
color = 'steelblue', #折线颜色
marker = 'o',  #折线图中添加圆点
markersize = 6, #点的大小
markeredgecolor = 'black', #点的边框色markerf acecolor = 'browm') #点的填充色

#添加y轴标签
plt.ylabel('人数')

#添加图形标题
plt.title('每天微信文章阅读人数趋势')

#显示图形
plt.show()

color
色相环
marker
标记符 点形

  • 加号
    o 圆圈
  • 星号
    . 实心点
    x 叉号
    s 正方形
    d 钻石形
    ^ 上三角形
    v 下三角形
    右三角形
    < 左三角形
    p 五角星形
    h 六角星形
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值