python读取csv数据输出可视化图片

跟着小象学院学python,今天学习了读取csv数据输出可视化图片

老师的例子是window下的,我在linux下,系统字体跟例子的肯定不一样

原先其他输出可视化是用单独部件设置字体,这里输出用了plot()整体输出,没有fontproperties=my_font 这样参数

所以只能研究下设置整体参数为什么失效,很大概率应该是没有相应字体吧

往常查找了一下找到一个方法,打印出字体管理器找到的字体果然没有我想象的字体,找到了可用的字体

Alibaba PuHuiTi

好了,下面上代码 bottom10_aqi.csv

City,AQI,PM2.5/1h,PM10/h,CO/1h,NO2/1h,O3/1h,O3/8h,SO2/1h
邯郸,157,119,192,1.9,44,178,192,28
东莞,143,63,87,1.0,46,230,206,13
平度,141,81,119,2.6,28,207,203,14
鹤壁,133,54,105,1.27,39,151,195,19
德阳,129,37,80,0.65,26,196,190,10
平顶山,127,65,96,1.03,32,140,188,16
邢台,126,84,162,1.3,25,179,187,30
安阳,123,39,95,1.02,31,137,184,17
潍坊,120,73,133,1.46,24,161,180,19
莱西,120,63,103,2.8,25,200,180,18

然后就是python文件:

#!/usr/bin/python
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontManager

def main():
    """
        主函数
    """
    fm = FontManager()
    mat_fonts = set(f.name for f in fm.ttflist)
    print('字体信息:')
    print(mat_fonts)

    plt.rcParams['font.family'] = ['Alibaba PuHuiTi']
    plt.rcParams['axes.unicode_minus'] = False
    aqi_data = pd.read_csv('bottom10_aqi.csv')
    print('基本信息:')
    print(aqi_data.info())

    print('数据预览(5行数据):')
    print(aqi_data.head())

    # 基本统计
    print('PM2.5最大值:', aqi_data['PM2.5/1h'].max())
    print('PM2.5最小值:', aqi_data['PM2.5/1h'].min())
    print('PM2.5均值:', aqi_data['PM2.5/1h'].mean())

    # 过滤数据
    clean_aqi_data=aqi_data[aqi_data['PM2.5/1h']>80]
    #print('PM2.5大于80:', clean_aqi_data)
    new_aqi_data= clean_aqi_data.sort_values(by=['PM2.5/1h'])
    print('PM2.5大于80 排序:\n', new_aqi_data)
    new_aqi_data.plot(kind='bar', x='City', y='PM2.5/1h', title='空气质量PM2.5大于80的城市',
                      figsize=(8, 4))
    plt.savefig('aqi_bar.png')
    plt.show()

if __name__ == '__main__':
    main()

如果文件赋予权限,双击就能执行了,输出图片

如果不能执行但是在终端里输入python xx.py 能执行,那说明第一行的解释器行尾有windows的换行符

把文件用linux格式另存一下,就可以了,相反如果是windows下第一行的解释器要改为windows路径的python.exe

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值