+1 (315) 557-6473 

Create a Program to Read Battery Charging Time in Python Assignment Solution.


Instructions

Objective
Write a program to read battery charging time in python language.

Requirements and Specifications

program to read battery charging time in python
program to read battery charging time in python 1
program to read battery charging time in python 2
program to read battery charging time in python 3
program to read battery charging time in python 4

Source Code

# -*- coding: utf-8 -*-

"""AliAssignment.ipynb

Automatically generated by Colaboratory.

Original file is located at

https://colab.research.google.com/drive/1yjeu4fehoNOo9yxnmp5S0CQ31ScBoRlG

"""

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from datetime import datetime

"""## Read files"""

# Store data in dictionaries

battery = dict()

for i in range(1, 6):

if not i in battery:

battery[i] = {

'PW_EnergyRemaining': {'timestamps': [], 'values': []},

'PW_FullPackEnergyAvailable': {'timestamps': [], 'values': []},

'PW_AvailableChargePower': {'timestamps': [], 'values': []},

'SOE': {'timestamps': [], 'values': []}

}

ile_name = '00' + str(i) + '.csv'

df = pd.read_csv(file_name)

# Drop NaN rows

df = df.dropna()

# Iterate through rows

for index, row in df.iterrows():

timestamp = row['timestamp']

signal_name = row['signal_name']

value = row['signal_value']

battery[i][signal_name]['timestamps'].append(datetime.fromtimestamp(timestamp/1000))

battery[i][signal_name]['values'].append(value)

# Calculate SOE

for j in range(min(len(battery[i]['PW_EnergyRemaining']['values']), len(battery[i]['PW_FullPackEnergyAvailable']['values']))):

x = battery[i]['PW_EnergyRemaining']['values'][j]

y = battery[i]['PW_FullPackEnergyAvailable']['values'][j]

battery[i]['SOE']['timestamps'].append(battery[i]['PW_EnergyRemaining']['timestamps'][j])

battery[i]['SOE']['values'].append(x/y)

"""

print(f"Battery {i}")

for signal_name in battery[i]:

print(f"There are {len(battery[i][signal_name]['values'])} values for {signal_name}")

print("\n")

"""

"""## Task 1

For battery 1, compute Monthly Average of percentage time for which Battery 001 has its PW_AvailableChargePower greater than or equal to its rate capacity

"""

print("\n*** TASK 1 ***")

months = {}

month_counter = {}

for i in range(len(battery[1]['PW_AvailableChargePower']['values'])):

val = battery[1]['PW_AvailableChargePower']['values'][i]

month = battery[1]['PW_AvailableChargePower']['timestamps'][i].month

if val >= 3300:

months[month] = months.get(month, 0) + 1

month_counter[month] = month_counter.get(month, 0) + 1

# Now, calculate average

for month in months:

months[month] = months[month] / month_counter[month]

# Print

print("For month {} the average percent of time for which PW_AvailableChargePower >= Rate Capacity is {:.2f}%".format(month, months[month]*100.0))

x = list(months.keys())

y = list(months.values())

y = [i*100.0 for i in y]

plt.figure(1)

plt.bar(x, y)

plt.xlabel('Month')

plt.ylabel('Percentage of time (%)')

plt.title('Monthly Average of Percentage Time of availability for Battery 1')

plt.show()

"""## Task 2

Calculate monthly charge power availability

"""

print("\n*** TASK 2 ***")

months = {}

month_counter = {}

for i in range(len(battery[1]['PW_AvailableChargePower']['values'])):

val = battery[1]['PW_AvailableChargePower']['values'][i]

month = battery[1]['PW_AvailableChargePower']['timestamps'][i].month

SOE = battery[1]['SOE']['values'][i]

if SOE < 0.9:

months[month] = months.get(month, 0) + val

month_counter[month] = month_counter.get(month, 0) + 1

# Now, calculate average

for month in months:

months[month] = months[month] / month_counter[month]

# Print

print("The monthly charge power availability for month {} is {:.2f} W".format(month, months[month]))

# Show bar plot

x = list(months.keys())

y = list(months.values())

plt.figure(1)

plt.bar(x, y)

plt.xlabel('Month')

plt.ylabel('Power (W)')

plt.title('Average Charge Power Availability')

plt.show()

"""## Task 3"""

print("\n*** TASK 3 ***")

n = 3

months = {}

months_counter = {}

for i in range(1, 6):

print(f"Battery {i}")

for j in range(len(battery[i]['SOE']['values'])):

val = battery[i]['PW_AvailableChargePower']['values'][j]

month = battery[i]['PW_AvailableChargePower']['timestamps'][j].month

SOE = battery[i]['SOE']['values'][j]

if SOE < 0.9:

months[month] = months.get(month, 0) + val

month_counter[month] = month_counter.get(month, 0) + 1

# Now, calculate average

for month in months:

months[month] = months[month] / month_counter[month]

# Print

print("The monthly charge power availability for month {} is {:.2f} W".format(month, months[month]))

# Show bar plot

x = list(months.keys())

y = list(months.values())

plt.figure(n)

plt.bar(x, y)

plt.xlabel('Month')

plt.ylabel('Power (W)')

plt.title(f'Average Charge Power Availability between all batteries')

plt.show()

print("\n")

n = n + 1