我有一个很大的csv文件,这里有一些数据:
"C1_E1",,,,,
"Time","Force","Disp.","Stress","Strain","Stroke"
"sec","N","mm","MPa","%","mm"
"0","0.1192093","0","0.003017193","0","0"
"0.01","0.09536743","2.083333E-05","0.002413754","1.621271E-05","2.083333E-05"
"0.02","0.09536743","0.00025","0.002413754","0.0001945525","0.00025"
"0.03","0.09536743","0.0013125","0.002413754","0.001021401","0.0013125"
"0.04","0.09536743","0.003604167","0.002413754","0.002804799","0.003604167"
"0.05","0.09536743","0.006875","0.002413754","0.005350194","0.006875"
"0.06","0.09536743","0.01104167","0.002413754","0.008592736","0.01104167"
"0.07","0.09536743","0.01602083","0.002413754","0.01246757","0.01602083"
"0.08","0.09536743","0.02191667","0.002413754","0.01705577","0.02191667"
"0.09","0.09536743","0.028625","0.002413754","0.02227626","0.028625"
"0.1","0.09536743","0.035875","0.002413754","0.02791829","0.035875"
"0.11","3.910065","0.04352083","0.09896392","0.03386835","0.04352083"
"0.12","13.39118","0.05145833","0.3389313","0.0400454","0.05145833"
"0.13","18.46155","0.05989583","0.4672626","0.04661154","0.05989583"
"0.14","23.57165","0.06875","0.5965995","0.05350194","0.06875"
我需要使用Stress和Strain列和pandas中的数据计算出数量E.这将使用最小二乘法来完成。我写了以下代码:
from scipy import *
import pandas as pd
location = r'C:...\C1-E1.csv'
df = pd.read_csv(location, header=1)
title = pd.read_csv(location, header=None)
title = title.loc[0][0]
df = df[1:].astype(float)
i = 1
XY_calc = pd.DataFrame(columns=['X', 'Y', 'XY', 'sum(XY)', 'mean(X)', 'mean(Y)', 'X^2', 'sum(X^2)', 'mean(X)^2'])
XY_calc = XY_calc[0:].astype(float)
while i < len(df.index):
XY_calc.at[i, 'X'] = df.at[i, 'Strain']
XY_calc.at[i, 'Y'] = df.at[i, 'Stress']
XY_calc.at[i, 'XY'] = df.at[i, 'Strain']*df.at[i, 'Stress']
XY_calc.at[i, 'sum(XY)'] = sum_XY = XY_calc['XY'].sum()
XY_calc.at[i, 'mean(X)'] = mean_X = XY_calc['X'].mean()
XY_calc.at[i, 'mean(Y)'] = mean_Y = XY_calc['Y'].mean()
XY_calc.at[i, 'X^2'] = X_sqrd = XY_calc.at[i, 'X']**2
XY_calc.at[i, 'sum(X^2)'] = sum_X_sqrd = XY_calc['X^2'].sum()
XY_calc.at[i, 'mean(X)^2'] = mean_X_sqrd = XY_calc.at[i, 'mean(X)']**2
E = (sum_XY-(i*mean_X*mean_Y))/(sum_X_sqrd-(i*mean_X_sqrd))
i += 1
输出结果为:
C:.../Python/E calc.py:49: RuntimeWarning: invalid value encountered in double_scalars
E = (sum_XY-(i*mean_X*mean_Y))/(sum_X_sqrd-(i*mean_X_sqrd))
X Y XY sum(XY) mean(X) mean(Y) \
1 0.000000 0.003017 0.000000e+00 0.000000e+00 0.000000 0.003017
2 0.000016 0.002414 3.913349e-08 3.913349e-08 0.000008 0.002715
3 0.000195 0.002414 4.696019e-07 5.087354e-07 0.000070 0.002615
4 0.001021 0.002414 2.465411e-06 2.974146e-06 0.000308 0.002565
5 0.002805 0.002414 6.770095e-06 9.744241e-06 0.000807 0.002534
X^2 sum(X^2) mean(X)^2
1 0.000000e+00 0.000000e+00 0.000000e+00
2 2.628520e-10 2.628520e-10 6.571299e-11
3 3.785068e-08 3.811353e-08 4.935775e-09
4 1.043260e-06 1.081374e-06 9.488960e-08
5 7.866897e-06 8.948271e-06 6.518835e-07
我有两个问题:
感谢和抱歉这个长期的问题,我还是蟒蛇和熊猫的新手。