pd.set_option('display.max_columns',None) # 全部列打印
pd.set_option('display.max_rows',None) # 全部行打印
纵向合并 变量名要完全相同 支持多表合并
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')
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()
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()
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()