ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

dataframe实例可视化

2021-09-08 22:33:20  阅读:208  来源: 互联网

标签:plt alcohol Open dataframe 实例 可视化 drinks data stock


drinks = pd.read_csv('drinks.csv', keep_default_na = False) 
# keep_default_na = True :将缺失值转换成NAN,False:是什么就读进来什么
drinks.info # 每列的具体信息
alcohol = pd.groupby(by = 'continent').sum()['total_values_of_pure_alcohol'] # 得到一个series
plt.bar(alcohol.index, alcohol, width=0.5)
# 或者Series中
alcohol.plot(kind='bar')
# dataframe中也可以画出来
df.plot(kind='bar') # 多列

# 在条形图上加曲线图
plt.bar(alcohol.index, alcohol, width=0.5)
plt.plot([0,1,2,3,4,5], alcohol, color='green')
# 如何在条形图上添加数字
plt.text(0,400,387.8) # 在(0,400)的位置上,添加387.8

# 练习:比较中国,美国,英国,俄罗斯 四个国家的白酒消耗量,绘制成柱状图
test = drinks[(drinks.country=='China')|(drinks.country=='USA') | (drinks.country=='United Kingdom') | (drinks.country=='Russia')]
test.spirt_servings.plot(kind='bar') # 发现,X轴不是国家,说明行索引不是国家
# 那我们重写
test.spirt_sverings.plot(kind='bar', tick_label = ['中国', '美国', '英国', '俄罗斯'])
# 发现上面还是显示不出来国家,那我们只能用plt了
plt.bar([1,2,3,4], test_spirt_servings, titick_label = ['中国', '美国', '英国', '俄罗斯'], 
width = 0.5) # 正确显示了

# bar是把你已经总结的数据呈现出来,用来对比各个组的数据
# hist是制作一个频率分布图,比如把一个数据等距分成10部分,每个部分的频率是多少,大概看一下分布
plt.hist(drinks.total_liters_of_pure_alcohol, bins = 20)
# 例如第一段是0-0.72,有32个国家在这个范围
# 也可以自己设置分割的距离
plt.hist(tips.total_bill, bins = [0,5,10,15,20,30])
# 显示概率值
plt.hist(tips.total_bill, bins = [0,5,10,15,20,30], density = True, color = 'red')
-----------------------------------------------------------------------------------------
# 散点图
plt.scatter([1,2,3,4], [1,2,3,4])
# = plt.plot([1,2,3,4], [1,2,3,4], '.')
# 假设四个点,改变点的颜色(渐变:c = [0,0,1,1])和大小(s = [100,200,300,400]) 
plt.scatter([1,2,3,4], [1,2,3,4], s = [100, 200, 300, 400], c = [0,0,1,1])
# cmap = 'rainbow' 彩虹颜色...

# 用总分来映射点的颜色,总分越高,点越大
plt.scatter(grade.英语, grade.数学, c = grade.总分, cmap = 'rainbow', s = grade.总分)

# 将男女用颜色分开
plt.scatter(tips.total_bill, tips.tip, s=100, c=(tips.sex=='Female').astype('int'), cmap='rainbow')
-----------------------------------------------------------------------------------------
# 饼状图
labels = ['吃饭', '交通', '游戏', '衣服']
data = [1000, 100, 500, 200]
plt.figure(figsize=(2,2). dpi=200)
plt.pie(data, labels = labels, exlode = (0,0,0.3,0), color = ['r', 'o', 'y', 'g'],
shadow = True, labeldistance=1.3, autopct='%1.1f%%') # 游戏突出显示30%,标签距离1.3,显示数据百分比(小数据点后一位)(%1.2f%%小数点2位)

# 还有箱型图....不说了,百度把
# 另外还有子图的画法

a1 = plt.subplot(221)
###
a2 = plt.subplot(222)
###
a3 = plt.subplot(223)
###
a4 = plt.subplot(224)

# 保存:
plt.save('hello.jpg', dpi = 200)

-----------------------------------------------------------------------------------------案例:绘制一个雅虎股票走势图
stock_data = pd.read_csv('yahoo_stock.csv')
stock_data.info()
stock_data.Date = pd.to_datetime(stock_data.Date)
# stock_date.Date = stock_data.Date.astype('int')
stock_data.info()
stock_data.sey_index('Date', inplace = True)
stock_data.sort_index(inplace=True) # 日期排序

plt.Figure()
plt.titile('雅虎历年股票走势图', fontsize=22)
plt.plot(stock_data.Open) # 查看Open的走势
plt.xlabel('日期', fontsize = 22)
plt.ylabel('价格', fontsize = 22)
plt.axhline(stock_data.Open[0], color='black', linewidth = 3, label='上市价格') # 画横线,给出纵坐标位置

plt.fill_between(x = stock_data.index, y1=stock_data.Open, y2=stock_data.Open[0],
where=stock_data.Open>stock_data.Open[0], color='red', alpha=0.5, label='增长部分')
# 根据y1和y2的分割线填充,位置where
plt.fill_between(x = stock_data.index, y1=stock_data.Open, y2=stock_data.Open[0],
where=stock_data.Open<stock_data.Open[0], color='red', alpha=0.5, label='破发部分')

# 画箭头需要给出文字的位置(箭头开始的位置),箭头结束的位置
plt.annotate('最高价:{}'.format(stock_data.Open.max()), {'2012-9-12', stock_data.Open.max()}, fontsize=24, xytext={80,400}, text_coords='figure points', arrowprops={"color":'red'})

plt.legend(fontsize=22, loc=2)
plt.savefig('yahoo_stock.jpg', dpi=200)

标签:plt,alcohol,Open,dataframe,实例,可视化,drinks,data,stock
来源: https://blog.csdn.net/qq_32752467/article/details/120187391

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有