Add exercise 3
This commit is contained in:
parent
fdacfc4b09
commit
8151dd11c8
2 changed files with 7052 additions and 0 deletions
85
Exercise 3/exercise3.py
Normal file
85
Exercise 3/exercise3.py
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from scipy import integrate
|
||||
import pandas as pd
|
||||
# from tqdm import tqdm #Import all needed modules
|
||||
|
||||
columns = ["Material", "Density", "Radius", "Mass", "Temperature", "Pressure", "Height", "Time"]
|
||||
columnsNoMaterial = ["Density", "Radius", "Mass", "Temperature", "Pressure", "Height", "Time"]
|
||||
units = ["", "kg/m^3", "m", "kg", "K", "Pa", "m", "s"]
|
||||
materials = ["magnesium", "polycarbonate", "silica", "zinc_oxide", "silicon_carbide", "titanium", "iron"]
|
||||
radii = [0.005, 0.01, 0.015, 0.02, 0.025]
|
||||
|
||||
def getData(file):
|
||||
columns = ["Material", "Density", "Radius", "Mass", "Temperature", "Pressure", "Height", "Time"]
|
||||
data = pd.read_csv(file, sep=',', names=columns, skiprows=9, on_bad_lines='skip')
|
||||
|
||||
data["Density"] = pd.to_numeric(data["Density"], errors='coerce')
|
||||
data["Temperature"] = pd.to_numeric(data["Temperature"], errors='coerce')
|
||||
data["Time"] = pd.to_numeric(data["Time"], errors='coerce')
|
||||
|
||||
for column in columns:
|
||||
if column == "Material":
|
||||
for i in data.index:
|
||||
if data[column][i] not in materials:
|
||||
data.drop(i, inplace=True)
|
||||
else:
|
||||
for i in data.index:
|
||||
if data[column][i] < 0:
|
||||
data.loc[i, column] = -data.loc[i, column]
|
||||
|
||||
data.dropna(inplace=True)
|
||||
return data
|
||||
|
||||
def columnStats(column, units):
|
||||
min = df[column].min()
|
||||
max = df[column].max()
|
||||
mean = df[column].mean()
|
||||
stdDev = df[column].std()
|
||||
|
||||
print(f'Statistics for {column}')
|
||||
print(f'Minimum: {min}{units}')
|
||||
print(f'Maximum: {max}{units}')
|
||||
print(f'Mean: {mean}{units}')
|
||||
print(f'Standard Deviation: {stdDev}{units}')
|
||||
print()
|
||||
|
||||
df = getData('exercise3data.csv')
|
||||
|
||||
# for i in range(len(columns)):
|
||||
# if columns[i] == "Material":
|
||||
# continue
|
||||
# else:
|
||||
# columnStats(columns[i], units[i])
|
||||
|
||||
# for material in materials:
|
||||
# materialDf = df[df["Material"] == material]
|
||||
# for radius in radii:
|
||||
# radiusDf = materialDf[materialDf["Radius"] == radius]
|
||||
# print(radiusDf)
|
||||
# plt.scatter(radiusDf["Height"], radiusDf["Time"], label=f'Radius {radius}m')
|
||||
|
||||
# plt.xlabel("Drop Height/m")
|
||||
# plt.ylabel("Fall Time/s")
|
||||
# plt.title(f'Material: {material}')
|
||||
# plt.legend()
|
||||
# plt.show()
|
||||
|
||||
dfNoMaterial = df.drop("Material", axis=1)
|
||||
corrMatrix = dfNoMaterial.corr(method='pearson')
|
||||
print(corrMatrix)
|
||||
|
||||
fig, ax = plt.subplots()
|
||||
im = ax.imshow(corrMatrix, cmap="gnuplot", vmin=-1, vmax=1)
|
||||
|
||||
ax.set_xticks(range(len(columnsNoMaterial)), labels=columnsNoMaterial)
|
||||
ax.set_yticks(range(len(columnsNoMaterial)), labels=columnsNoMaterial)
|
||||
|
||||
for i in range(len(columnsNoMaterial)):
|
||||
for j in range(len(columnsNoMaterial)):
|
||||
text = ax.text(j, i, round(corrMatrix[columnsNoMaterial[i]][columnsNoMaterial[j]], 2),
|
||||
ha="center", va="center", color="w")
|
||||
|
||||
fig.colorbar(im)
|
||||
fig.tight_layout()
|
||||
plt.show()
|
||||
6967
Exercise 3/exercise3data.csv
Normal file
6967
Exercise 3/exercise3data.csv
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue