首页 > 编程语言 >python基础 - 数据可视化

python基础 - 数据可视化

时间:2024-06-23 21:59:04浏览次数:18  
标签:plt 设置 python matplotlib df 可视化 pd rcParams 数据

数据分析与可视化
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}

1、csv库
Python 天生支持读取 CSV 格式数据并且是可配置的(这个我们看到是必不可少的)。在 Python 里边有个模块 csv ,它包含了 CSV 读取/生成所需的所有支持,并且它遵守 RFC 标准(除非你覆盖了相应的配置),因此默认情况下它是能够读取和生成合法的 CSV 文件

创建一个像常规编写器一样操作的对象,但将字典映射到输出行。的字段名的参数是一个sequence标识,其中在传递给字典值的顺序按键的writerow()方法被写入到文件中

2、pandas 使用方法
对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas是一个非常重要的Python包。它不仅提供了很多方法,使得数据处理非常简单,同时在数据处理速度上也做了很多优化,使得和Python内置方法相比时有了很大的优势。

导入数据
pd.read_csv(filename):从CSV文件导入数据
pd.read_table(filename):从限定分隔符的文本文件导入数据
pd.read_excel(filename):从Excel文件导入数据
pd.read_sql(query, connection_object):从SQL表/库导入数据
pd.read_json(json_string):从JSON格式的字符串导入数据
pd.read_html(url):解析URL、字符串或者HTML文件,抽取其中的tables表格
pd.read_clipboard():从你的粘贴板获取内容,并传给read_table()
pd.DataFrame(dict):从字典对象导入数据,Key是列名,Value是数据
输出数据、增、删、查、改

查看、检查数据
df:任意的Pandas DataFrame对象【比如pd的返回值】
s:任意的Pandas Series对象

df.head(n):查看DataFrame对象的前n行
df.tail(n):查看DataFrame对象的最后n行
df.shape():查看行数和列数
df.info():查看索引、数据类型和内存信息
df.describe():查看数值型列的汇总统计 s.
s.value_counts(dropna=False):查看Series对象的唯一值和计数
df.apply(pd.Series.value_counts):查看DataFrame对象中每一列的唯一值和计数
df.dropna()#删除包含缺失值的行
df[["a","b"]] #直接取出对应a ,b的列数据
df.iloc:切位置,以序列号去切 df.iloc[:10]
import pandas as pd
RAW_DATA_DIR = 'data_raw/'

将一个或多个路径正确地连接起来

sample_tsv_path = os.path.join(RAW_DATA_DIR, 'normal_1/airsim_rec.txt')

读取数据

sample_tsv = pd.read_csv(sample_tsv_path, sep='\t')

查看数据

sample_tsv.head()

3、Matplotlib画图
在使用Matplotlib画图时,我遇到了一个尴尬的情况,那就是当x轴的标签名字很长的时候,在绘制图形时,发生了x轴标签互相

重叠的情况。本文主要通过一个简单的示例,探索了以上描述问题的4种解决方法。

示例
import pandas as pd
import matplotlib.pyplot as plt

准备数据

data = {'sport_type':['running', 'walking', 'variable speed running', 'variable speed walking', 'swimming'], 'score':[88, 55, 68, 77, 80]}
df = pd.DataFrame(data)

绘制图形

plt.bar(df['sport_type'], df['score'])
绘图结果:

在使用上述数据进行绘图的时候,就出现了本文一开始描述的问题,我们可以从柱状图看到,除了第1个x轴标签之外,后面4个都发生了重叠。

方法一:拉长画布
既然x轴标签是由于横向空间不足,导致发生了重叠,那么,我们只需要将图形的横向空间拉长即可,也就是设置一个更大的画布。

fig = plt.figure(figsize=(12,4)) # 设置画布大小
plt.bar(df['sport_type'], df['score'])
绘图结果:

img

方法二:调整标签字体大小
方法二是方法一的逆向思路,既然可以调大画布,那么反过来,我们也可以调小x轴标签字体。

plt.tick_params(axis='x', labelsize=8) # 设置x轴标签大小
plt.bar(df['sport_type'], df['score'])
绘图结果:

方法三:横纵颠倒
只要我们将纵向柱状图改成横向柱状图,那么就不会存在这种问题。

plt.barh(df['sport_type'], df['score']) # 绘制横向柱状图

方法四:标签旋转
我们只需要将x轴的标签旋转一定的角度,就可以让其不再发生重叠。

plt.bar(df['sport_type'], df['score'])
plt.xticks(rotation=-15) # 设置x轴标签旋转角度
绘图结果:

import numpy as np
import matplotlib.pyplot as plt

plt.figure('正弦曲线') # 调用figure函数创建figure(1)对象,可以省略,这样那plot时,它就自动建一个啦;

t = np.arange(0.0, 4.0, 0.1)
s = np.sin(np.pi*t)
plt.plot(t, s, 'g--o', label = 'sinx')

plt.legend() # 显示右上角的那个label,即上面的label = 'sinx'
plt.xlabel('time (s)') # 设置x轴的label,pyplot模块提供了很直接的方法,内部也是调用的上面当然讲述的面向对象的方式来设置;
plt.ylabel('voltage (mV)') # 设置y轴的label;

plt.xlim(-1,3) # 可以自己设置x轴的坐标的范围哦;

plt.ylim(-1.5,1.5)

plt.title('About as simple as it gets, folks')
plt.grid(True) # 显示网格;

plt.show()

4、matplotlib.pyplot.text()
matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, kwargs)
1
通过函数方式,向a x e s axesaxe
s对象添加t e x t texttext对象,确切的说是向a x e s axesaxes的( x , y ) (x,y)(x,y)位置添加s ss文本。返回一个text实例。

参数详解
x, y : scalars 防止text的位置

s : str 内容text

fontdict : dictionary, optional, default: None 一个定义s格式的dict

withdash : boolean, optional, default: False。如果True则创建一个 TextWithDash实例。

以下为其他常用参数1:

fontsize设置字体大小,默认12,可选参数 [‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’,‘x-large’, ‘xx-large’]

fontweight设置字体粗细,可选参数 [‘light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’, ‘heavy’, ‘black’]

fontstyle设置字体类型,可选参数[ ‘normal’ | ‘italic’ | ‘oblique’ ],italic斜体,oblique倾斜

verticalalignment设置水平对齐方式 ,可选参数 : ‘center’ , ‘top’ , ‘bottom’ ,‘baseline’

horizontalalignment设置垂直对齐方式,可选参数:left,right,center

rotation(旋转角度)可选参数为:vertical,horizontal 也可以为数字

alpha透明度,参数值0至1之间

backgroundcolor标题背景颜色

bbox给标题增加外框 ,常用参数如下:

boxstyle方框外形
facecolor(简写fc)背景颜色
edgecolor(简写ec)边框线条颜色
edgewidth边框线条大小
5、设置图的pylab样式
我们在使用matplotliblib画图的时候经常会遇见中文或者是负号无法显示的情况,我们会添加下面两句话:

from matplotlib.pylab import mpl

mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus']=False
12345

实际上,pylot使用rc配置文件来自定义图形的各种默认属性,称之为rc配置或rc参数。通过rc参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。

设置相关的配置
方法一:

matplotlib.rcParams[‘figure.figsize’] #图片像素
matplotlib.rcParams[‘savefig.dpi’] #分辨率
plt.savefig(‘plot123_2.png’, dpi=200) #指定分辨率
plt.rcParams['savefig.dpi'] = 300 #图片像素
plt.rcParams['figure.dpi'] = 300 #分辨率

默认的像素:[6.0,4.0],分辨率为100,图片尺寸为 600&400

指定dpi=200,图片尺寸为 1200*800

指定dpi=300,图片尺寸为 1800*1200

设置figsize可以在不改变分辨率情况下改变比例


plt.rcParams['figure.figsize'] = (5.0, 4.0) # 显示图像的最大范围
plt.rcParams['image.interpolation'] = 'nearest' # 差值方式,设置 interpolation style
plt.rcParams['image.cmap'] = 'gray' # 灰度空间

设置rc参数显示中文标题

设置字体为SimHei显示中文

plt.rcParams['font.sans-serif'] = 'SimHei'

设置正常显示字符

plt.rcParams['axes.unicode_minus'] = False

设置线条样式

plt.rcParams['lines.linestyle'] = '-.'

设置线条宽度

plt.rcParams['lines.linewidth'] = 3
123456789101112131415161718192021222324
方法二:

为了方便配置,可以使用rc函数,下面的例子同时配置点标识符、线宽和颜色:

matplotlib.rc(“lines”, marker=”x”, linewidth=2, color=”red”)
如果希望恢复到缺省的配置(matplotlib载入时从配置文件读入的配置)的话,可以调用 rcdefaults 函数。

12345
恢复默认参数
matplotlib.rcdefaults()
如果手工修改了配置文件,希望重新从配置文件载入最新的配置的话,可以调用:
12
更新参数

matplotlib.rcParams.update( matplotlib.rc_params() )
6、zip() 函数
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。

如果需要了解 Pyhton3 的应用,可以参考 Python3 zip()。

语法
zip 语法:

zip([iterable, ...])
参数说明:

iterabl -- 一个或多个迭代器;
返回值
返回元组列表。

实例
以下实例展示了 zip 的使用方法:

a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 打包为元组的列表 [(1, 4), (2, 5), (3, 6)]
zip(a,c) # 元素个数与最短的列表一致 [(1, 4), (2, 5), (3, 6)]
zip(zipped) # 与 zip 相反,zipped 可理解为解压,返回二维矩阵式 [(1, 2, 3), (4, 5, 6)]
7、案例名词解读
1、总股本

表示股票数量总和,包括流通股本和非流通股本。一家公司的股本一般不是固定不变的,比如当公司股价上涨到一定程度时,由于每股的价格比较高导致不易流通,则可以通过拆股的方式增加股本,此时股民手中的股票总价值不变,只是每股价值变小了。

某些公司可能同时在 A 股和港股(H股)上市,则总股本为 A 股股本加上港股股本。

2、总市值

即总股本 * 每股价格,表示股份制公司的股票总价值。同样,对于 AH 股,总市值等于 A 股市值加上 H 股市值。

3、流通股

即流通股本,表示能够在股票市场交易的股票总数。流通股比例大,股票的流通性就比较强,庄家就不易控盘,同时该股不易成为黑马。相反,流通股比例比较小,庄家就很容易吸筹建仓,能快速拉升股价,成为黑马的机率较大。如果在没庄家的介入的前提下,流通股本比例大的股票价格波动相对要小一些。

4、流通值

即流通市值,计算方法是流通股本*每股价格。

5、市盈率

英文全称 Price to Earning Ratio,简称 PE。计算方法为公司总市值 / 一年净利润,也可以用每股价格/每股利润,所以也叫“股价收益比率”。由于“一年净利润”中的“一年”可以有不同的定义,因此市盈率又分为以下几种。

静态市盈率:PE(静),以当前总市值,除以过去一年的净利润。反映了去年企业的经营状况及基于去年业绩的当前公司估值情况,是股票软件中经常出现的指标。
滚动市盈率:PE(TTM) ,以当前总市值,除以过去十二个月(TTM 意思为 Trailing Twelve Months)的净利润。反映了过去十二个月企业的真实盈利状况,是对上市公司实时估值的反映。
动态市盈率:PE(动),是指以当前总市值,除以预估今年全年的净利润。
市场广泛谈及市盈率通常指的是静态市盈率,通常用来作为比较不同价格的股票是否被高估或者低估的指标。 市盈率反映了在每股盈利不变的情况下,当派息率为 100%,并且所得股息没有进行再投资的条件下,经过多少年投资可以通过股息全部收回。一般情况下,一支股票市盈率越低,市价相对于股票的盈利能力越低,表明投资回收期越短,投资风险就越小,股票的投资价值就越大;反之则结论相反。当公司亏损即净利润为负数的时候,无法计算市盈率。

6、市净率

英文全称为 Price-to-Book Ratio,简称 PB,计算公式为公司总市值 / 所有者权益,也即每股股价除以每股净资产。

股票净值是决定股票市场价格走向的主要根据。上市公司的每股内含净资产值高而每股市价不高的股票,即市净率越低的股票,其投资价值越高,相反则投资价值就越小。但在判断投资价值时还要考虑当时的市场环境以及公司经营情况、盈利能力等因素。

市净率能够较好地反映出"有所付出,即有回报",它能够帮助投资者寻求哪个上市公司能以较少的投入得到较高的产出,对于大的投资机构,它能帮助其辨别投资风险。

这里要指出的是:市净率不适用于短线炒作,提高获利能力。

市净率可用于投资分析。每股净资产是股票的本身价值,它是用成本计量的,而每股市价是这些资产的现在价格,它是证券市场上交易的结果。市价高于价值时企业资产的质量较好,有发展潜力,反之则资产质量差,没有发展前景。优质股票的市价都超出每股净资产许多,一般说来市净率达到 3 可以树立较好的公司形象。市价低于每股净资产的股票,就像售价低于成本的商品一样,属于"处理品"。当然,"处理品"也不是没有购买价值,问题在于该公司今后是否有转机,或者购入后经过资产重组能否提高获利能力,是市价与每股净资产之间的比值,比值越低意味着风险越低。

市净率的作用还体现在可以作为确定新发行股票初始价格的参照标准。如果股票按照溢价发行的方法发行的话,要考虑按市场平均投资潜力状况来定溢价幅度,这时股市各种类似股票的平均市盈率便可作为参照标准。

7、股息和股息率

股息就是股票的利息,是指股份公司从提取了公积金、公益金的税后利润中按照股息率派发给股东的收益。股息(TTM)指的是过去十二个月的股息。

股息率,是一年总股息与当时市价的比例,也即每股股息 / 每股股价。股息率(TTM)则为过去 12 个月的股息率。

股息率越高说明公司越愿意把挣来的利润分给股东。

8、ROA

资产回报率,是用来衡量每单位资产创造出多少利润的指标。计算方法通常为税后净营业利润 / 平均资产。

9、ROE

净资产收益率,一般用于衡量一家公司运用自由资本的效率。计算方法通常为净收入 / 平均股本。

10、换手率

指当日股票转手买卖的频率,计算公式为成交量 / 流通股本。通常换手率越高意味着股价可能起伏较大。

11、振幅

股票开盘后的当日最高价和最低价之间的差的绝对值与昨日收盘价的百分比,它在一定程度上表示股票的活跃程度。

12、每手

即每手股数。股票一手是证券市场的一个交易的最低限额,每个市场的规定不一样。A 股一手固定为 100 股;港股则不固定,可以是任意股数;美股则每手固定为 1 股。

一个app注册的时候需要身份证
你上传身份证2面
识别算法(算法组 开发组)
测试人员需要这个身份证上传功能--有识别率的测试点
测试只能一个个手动去测试---反馈工作量特别大
有没有工具可以提供效率
需要开发组开发一个工具(测试开发来做)
测试开发工具开发。。。。。。。

标签:plt,设置,python,matplotlib,df,可视化,pd,rcParams,数据
From: https://www.cnblogs.com/running-snail-12345/p/18263988

相关文章

  • python基础 - 数据实战
    """数据挖掘的流程:1-获取数据1-从固有的本地获取2-互联网动态获取2-存储数据1-大量数据数据库2-部署太大数据--使用文件存储:1-txt2-excel3-csv3-清洗数据4-算法的介入5-结果展示6-分析汇总"""importrequests,timeimportpprint,csvimportthrea......
  • 如何使用ig507金融数据库的股票接口,股票API来获取MACD指标
    一、MACD指标简介MACD(MovingAverageConvergenceDivergence,移动平均收敛/发散)是一种趋势跟踪动量指标,用于分析股票或其他金融产品的价格趋势。MACD由两部分组成:差离值(DIF)和信号线(DEA)。DIF是短期(通常12天)指数移动平均线(EMA)与长期(通常26天)EMA的差值,再通过一个平滑期(通常9天)的E......
  • 【openGauss、PostgreSQL】openGauss、PostgreSQL数据库通用查表字段信息脚本-v202406
    【openGauss、PostgreSQL】openGauss、PostgreSQL数据库通用查表字段信息脚本-v20240620-2216openGauss、PostgreSQL数据库通用查表字段信息脚本-v20240620-2216openGauss、PostgreSQL数据库通用查表字段信息脚本-v20240620-2216此脚本,openGauss、PostgreSQL都可执......
  • python基础 - Qt5设计界面
    1、QtDesigner环境搭建1、安装PySide2库cmd里运行pipinstallPySide2-ihttps://pypi.douban.com/simple--trustedhostpypi.douban.com2、Pycharm关联DesignerFile->Settings->Tools->ExternalTools,打开页面。目的:用于快速设计、修改ui并生成.ui文件。Program......
  • python json反序列化为对象
    在Python中,将JSON数据反序列化为对象通常意味着将JSON格式的字符串转换为一个Python的数据结构(如列表、字典)或者一个自定义的类实例。虽然Python的标准库json模块不提供直接将JSON数据映射到类的实例的功能,但我们可以通过一些技巧来实现这个需求。以下是一个详细的示例,展示了如何......
  • Python实现语音转文字功能
    importosimportrequestsimporturllibimportcalendarimporttimeimportdatetimefrommoviepy.editorimportAudioFileClipfrompydubimportAudioSegmentfromaipimportAipSpeechclassDouYin:def__init__(self):self._headers={......
  • python基础 - 利用耗时计算回顾基础
    """json格式:1-自动化测试:做接口自动化测试响应数据里resp.json()接收数据2-测试开发:做后端服务--接口返回数据类型json转化方法:1-json--转--字典importjsonjson.loads()2-字典--转--jsonimportjsonjson.dumps()常见报错JSONDecodeError在j......
  • python基础 - 多线程技术
    基础概念importtimedeftest(something):print(f"我开始>>>{something}")time.sleep(2)print(f"我结束>>>{something}")"""场景:1-io密集型--阻塞sleeprequestssocket"""importthreading"&quo......
  • mysql 如何分配root账号创建数据库的权限
    1.mysql如何分配root账号创建数据库的权限在MySQL中,root用户通常具有所有的权限,包括创建数据库的权限。但是,如果我们想要为另一个用户分配创建数据库的权限,或者想要限制root用户对某个特定数据库或服务器的权限(尽管这在实际操作中并不常见,因为root用户通常应该是无限制的......
  • 数据结构/排序/堆排序 --- 逻辑讲解、代码实现、图形展示
    一、总体逻辑:    1.写一个交换的函数swap备用    2.写一个维护堆的性质的函数heapify备用    3.数组-> 堆(不明白的别急,后面会详细解释)    4.维护整个堆(看不懂别急别急别急)    5.堆顶和堆底的最后一个元素互换(不明......