热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用Python对CSV文件进行处理并生成符合要求的图表,在图表上继续截取符合条件的y值并进行功率P的计算

用Python对CSV文件进行处理并生成符合要求的图表,在图表上继续截取符合条件的y值并进行功率P的计算,Go语言社区,Golang程序员人脉社

实习任务2:在实习任务1的基础上并在给定的电流的情况下确定其功率并用图表显示出来
计算公式为 P= I*U
代码如下:

from matplotlib import pyplot as plt
import csv
import glob
import numpy as np
from os.path import basename

for n in range(9,14):           #Dateien von Modul_9 bis zu Modul_13
    plt.figure(1)               # Subdiagramm 1 plotten
    plt.figure(dpi = 128, figsize=(10,6))
    ax1 = plt.subplot(121)                                                                                                      
    plt.title("PIDrecovery_I-V_Kennlinie",fontsize = 16)
    plt.xlabel("Spannnung [V]", fontsize = 16)
    plt.ylabel("Strom [A]", fontsize = 16)
    def name_konfiguration(n):  # beim Name von Modul_9 muss noch ein '0' davor einfuegen
        if n == 9:
            return str("09")
        else:
            return str(n)
    files = sorted(glob.glob("F:Python_AufgabeAufgabe_2P09-P13_PIDreDIV_CSP_PIDre_MZ_2_P" + name_konfiguration(n) + "*.csv"))     #list of files
    print("processin raw files")
    mpp_liste= []               # eine liste fuer MPP erstellen
    for file in files:
        filename = basename(file).rsplit('.', 1)[0]      # each file in list of files                                                     
        print('r'+ filename + "  ", flush = True)     # progress information
        with open(file) as f:    #'with' will auto close after loop
            csvreader = csv.reader(f, delimiter = ",", quotechar='"')     #read into csv object

            for line in range(48):      #skip header                             
                next (csvreader)                                                                            

            voltage = []        #init lists      
            current = []
            for row in csvreader:
                voltage.append(float(row[6]))      #process each row
                current.append(float(row[3]))        #extract column           
            Imp = np.linspace(9,9,len(voltage))     # Isc auf dem Diagramm anzeigen                                                            
            idx = np.argwhere(np.diff(np.sign(Imp - current))).flatten() # entsprchende X-wert einsammeln
            print(int(idx))
            print(float(np.array(current,dtype=np.float)[idx]))
            print(float(np.array(voltage,dtype=np.float)[idx]))
            get_mpp=float(np.array(current,dtype=np.float)[idx] * np.array(voltage,dtype=np.float)[idx]) # multiplizieren
            mpp_liste.append(get_mpp)           # die Liste von MPP ausfuellen
            print("MPP: " + str(get_mpp))
            print("mpp_liste: " + str(mpp_liste[:]))
            plt.plot(voltage,Imp, label= filename)   #actual plot
            plt.plot(voltage, current)
            plt.plot(np.array(voltage,dtype=np.float)[idx], np.array(Imp,dtype=np.float)[idx], 'ro')       # kritische Punkte  auf dem Diagramm anzeigen                                                                            
            plt.legend()
    ax2 = plt.subplot(122)          # Subdiagramm 2 plotten
    plt.title("MPP_Kennlinie",fontsize = 16)
    plt.xlabel("Datei_nummer", fontsize = 16)
    plt.ylabel("MPP[W]", fontsize = 16)
    file_number= np.linspace(1,13,len(mpp_liste))        
    plt.plot(np.array(file_number),np.array(mpp_liste), label="DIV_CSP_PIDre_MZ_2_P" + name_konfiguration(n) + "MPP_Kennlinie")
    plt.legend()
    print("Done processing " + str(len(files)) + " files.")       #final information
    plt.savefig("F:Python_AufgabeAufgabe_2P09-P13_PIDreDIV_CSP_PIDre_MZ_2_P" + name_konfiguration(n) + ".png", dpi = 300)    #save plot as file
plt.show()       #present plot     

这是针对光伏模块09的描述图在这里插入图片描述


推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 解决python matplotlib画水平直线的问题
    本文介绍了在使用python的matplotlib库画水平直线时可能遇到的问题,并提供了解决方法。通过导入numpy和matplotlib.pyplot模块,设置绘图对象的宽度和高度,以及使用plot函数绘制水平直线,可以解决该问题。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • [echarts] 同指标对比柱状图相关的知识介绍及应用示例
    本文由编程笔记小编为大家整理,主要介绍了echarts同指标对比柱状图相关的知识,包括对比课程通过率最高的8个课程和最低的8个课程以及全校的平均通过率。文章提供了一个应用示例,展示了如何使用echarts制作同指标对比柱状图,并对代码进行了详细解释和说明。该示例可以帮助读者更好地理解和应用echarts。 ... [详细]
author-avatar
mobiledu2402851173
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有