2017.06.14回顾 dtype相关 Series平均数 type_of_target

本文介绍了使用Pandas和NumPy进行数据处理的方法,包括Series计算平均数、DataFrame数据类型转换、解决数据转换过程中的bug等问题,并探讨了不同类型数据在内存中的存储方式。

1、Series计算平均数,df[column].mean()

2、上午给同事讲了很久的关于验证四变量模型少掉两个变量仍具备有效性的证明,这个过程中也被多次打断

3、讲完开始写昨日总结

4、ndarray只能有一种数据类型,就是其中每个元素的类型,不能说每一列一个类型

5、np.sctypeDict可以查dtype类型dict,有很多不同的表达方法,其实是说的一个类,np.str_和np.string_都是numpy.string_类型,np.str就是python的str类

6、pandas继承了numpy的dtype,对于类型为string的列,显示出来dtype就是object,进一步,为什么是object?因为array内存中存储的并不是str类型,因为str类型不固定,存储的是一个pointer,指向字符串的起始位置。

7、似乎object还有一种表达是dtype('o'),是哪种情况下的输出,我记不清了

8、关于那个bug,我认为就是dataframe因为赋值,改变了列的类型为字符串,然后用np.array转换的时候,内存空间是等长的,所以赋值被截断,这似乎又和第6点存储pointer有些冲突,不细究了,一种解决方案是数据转换的时候还可以指定长度,某些情况下输出的时候就用S20这种,哦,我似乎明白了,对于可以设定等长的字符串,这个时候dtype就可以正常显示,对于不等长字符串就是存储pointer。ndarray改变类型的时候可以指定长度,x.astype((np.str_,20))。一方面改变长度可以解决,另外一种我直接把dataframe作为输入,因为后期,我必定会开发一个基于dataframe的工具箱,稍微了改了下dataframe直接作为输入,没有问题,bug解决

9、type_of_target,这个文档,我没看到,但是看到了源码,大概原理就是根据unique值来做判断

10、了解了下京东的测试相关对接事宜,又去了解了大数据竞赛等

11、最后一点时间,发现IV工具箱并没有用纯dataframe的方式来实现,尝试全部改成dataframe,最后又遇到了dataframe构造问题

最后,昨天的锻炼时间不足,差点未能坚持,加油,执行力!

import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler, LabelEncoder from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_report, confusion_matrix from mlxtend.frequent_patterns import apriori, association_rules import warnings warnings.filterwarnings('ignore') plt.rcParams['font.sans-serif'] = ['SimHei'] # 用于显示中文 plt.rcParams['axes.unicode_minus'] = False # ====================== 加载数据 ====================== file_path = 'final_train_ready.csv' data = pd.read_csv(file_path) # 删除无关列 drop_cols = ['ID', 'Delivery_person_ID', 'Order_Date', 'Time_Orderd', 'Time_Order_picked'] data.drop(columns=[col for col in drop_cols if col in data.columns], inplace=True) # ======== 清洗 Time_taken(min) 字段 ======== data['Time_taken(min)'] = ( data['Time_taken(min)'] .astype(str) .str.replace(r'[^\d.]', '', regex=True) .replace('', np.nan) .astype(float) ) print(f" 数据加载完成:{data.shape[0]} 行 × {data.shape[1]} 列\n") # ================== 关联规则挖掘================== print(" 开始:关联规则挖掘(购物篮分析思想)\n") # 选择分类变量 + 时间段作为维度 cat_vars = ['Weatherconditions', 'Road_traffic_density', 'Type_of_order', 'Type_of_vehicle', 'Festival', 'City', 'Order_Period'] subset_data = data[cat_vars].copy() # 将所有字段转为字符串类别 for col in subset_data.columns: subset_data[col] = subset_data[col].astype(str) # One-Hot 编码(独热编码) oht = pd.get_dummies(subset_data) oht = oht.groupby(level=0, axis=1).sum() # 合并重复列 # 应用 Apriori 获取频繁项集 frequent_items = apriori(oht, min_support=0.1, use_colnames=True) # 生成关联规则 rules = association_rules(frequent_items, metric="lift", min_threshold=1.0) rules = rules.sort_values(['lift', 'confidence'], ascending=False) # 筛选高置信度规则 strong_rules = rules[rules['confidence'] >= 0.5] print(f" 发现 {len(strong_rules)} 条强关联规则(confidence ≥ 0.5):\n") for idx, row in strong_rules.head(10).iterrows(): # 可调整显示条数 # 展开前件(antecedents) antecedent_terms = [f"{item}" for item in row['antecedents']] antecedent_str = " 且 ".join(antecedent_terms) # 展开后件(consequents) consequent_terms = [f"{item}" for item in row['consequents']] consequent_str = " 且 ".join(consequent_terms) # 格式化输出 print(f" 若 {antecedent_str} → 则 {consequent_str} " f"(支持度={row['support']:.3f}, 置信度={row['confidence']:.3f}, 提升度={row['lift']:.3f})") # ================== 分类模型构建 ================== print(" 开始:分类模型构建 —— 预测配送时间等级\n") # 目标变量:将连续时间划分为三类(短、中、长) time_labels = [0, 1, 2] # 0=短, 1=中, 2=长 data['Time_Category'] = pd.qcut(data['Time_taken(min)'], q=3, labels=time_labels) # 特征工程:编码分类变量 le = LabelEncoder() X_cat = data.select_dtypes(include=['object']).apply(lambda x: le.fit_transform(x.astype(str))) X_num = data.select_dtypes(include=[np.number]).drop(columns=['Time_taken(min)', 'Time_Category'], errors='ignore') X = pd.concat([X_cat, X_num], axis=1) y = data['Time_Category'] # 划分训练/测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y) # 训练随机森林分类器 clf = RandomForestClassifier(n_estimators=100, random_state=42, class_weight='balanced') clf.fit(X_train, y_train) y_pred = clf.predict(X_test) # 输出评估结果 print(" 分类性能报告:") print(classification_report(y_test, y_pred, target_names=['Short', 'Medium', 'Long'])) # 可视化混淆矩阵 # plt.figure(figsize=(6, 5)) # cm = confusion_matrix(y_test, y_pred) # sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=['Short','Medium','Long'], yticklabels=['Short','Medium','Long']) # plt.title('Confusion Matrix - Delivery Time Classification') # plt.xlabel('Predicted') # plt.ylabel('Actual') # plt.tight_layout() # plt.show() print("-" * 60) # ================== 聚类分析 ================== print("📊 开始:聚类分析 —— 订单行为分群\n") # === 提取用于聚类的特征 === cluster_features = [ 'Delivery_person_Ratings', 'Delivery_Distance', 'multiple_deliveries', 'Time_taken(min)', 'Order_Hour' ] X_clust = data[cluster_features].copy() # # === 关键步骤1:逐列强制转为数值类型(字符串→float)=== # for col in X_clust.columns: # if col == 'multiple_deliveries': # 特殊处理 # pattern = r'[^\d.]' # X_clust[col] = ( # X_clust[col].astype(str) # .str.replace(pattern, '', regex=True) # .replace('', np.nan) # .astype(float) # ) # else: # X_clust[col] = pd.to_numeric(X_clust[col], errors='coerce') # === 更安全地清洗数值列,特别是防止评分字段粘连 === def clean_rating_value(x): """清理可能粘连的评分字符串,尝试从中提取合理的浮点数""" if pd.isna(x) or x == '': return np.nan try: # 转为字符串 s = str(x).strip() # 如果本身就是合法浮点数,直接返回 if '.' in s and len(s) <= 5 and s.replace('.', '').isdigit(): return float(s) # 使用正则提取所有形如 3.5、4.9 的小数 import re matches = re.findall(r'\d\.\d', s) if matches: # 取平均值作为该样本的评分 floats = [float(m) for m in matches] return np.mean(floats) else: # 再试一次全局找数字(兼容 5 这样的整数) matches = re.findall(r'\d+', s) if matches: return float(matches[0]) # 取第一个整数 return np.nan except Exception: return np.nan # 单独处理各列 for col in X_clust.columns: if col == 'Delivery_person_Ratings': print(f"Cleaning {col} with custom parser...") X_clust[col] = X_clust[col].apply(clean_rating_value) elif col == 'multiple_deliveries': pattern = r'[^\d.]' X_clust[col] = ( X_clust[col].astype(str) .str.replace(pattern, '', regex=True) .replace('', np.nan) .astype(float) ) else: # 其他数值列正常转换 X_clust[col] = pd.to_numeric(X_clust[col], errors='coerce') # 再次确认类型 print("\n🔍 清洗后数据类型:") print(X_clust.dtypes) print("\n🧩 缺失值统计(清洗后):") print(X_clust.isnull().sum()) # 仅选择数值列进行填充 numeric_columns = X_clust.select_dtypes(include=[np.number]).columns.tolist() X_clust_filled = X_clust[numeric_columns].copy() # 填充均值 for col in numeric_columns: if X_clust_filled[col].isnull().any(): mean_val = X_clust_filled[col].mean() X_clust_filled[col].fillna(mean_val, inplace=True) # 确保无 NaN assert not X_clust_filled.isnull().any().any(), "仍有 NaN,请检查!" print("✅ 数据清洗完成,共 {} 个样本".format(len(X_clust_filled))) # === 标准化 === scaler = StandardScaler() X_scaled = scaler.fit_transform(X_clust_filled) X_scaled_df = pd.DataFrame(X_scaled, columns=numeric_columns) # === 肘部法找最优 k === inertias = [] k_range = range(1, 10) for k in k_range: kmeans = KMeans(n_clusters=k, random_state=42, n_init=10) kmeans.fit(X_scaled) inertias.append(kmeans.inertia_) # 可视化肘部图(可选开启) # plt.figure(figsize=(8, 5)) # plt.plot(k_range, inertias, 'bo-', linewidth=2, markersize=6) # plt.axvline(x=3, color='r', linestyle='--', label='k=3') # plt.title('Elbow Method for Optimal k') # plt.xlabel('Number of Clusters (k)') # plt.ylabel('Inertia') # plt.legend() # plt.grid(True) # plt.tight_layout() # plt.show() # === K-Means 聚类(k=3)=== optimal_k = 3 kmeans_final = KMeans(n_clusters=optimal_k, random_state=42, n_init=10) clusters = kmeans_final.fit_predict(X_scaled) # === 写回原数据 === data['Cluster'] = np.nan data.loc[X_clust_filled.index, 'Cluster'] = clusters data['Cluster'] = data['Cluster'].astype('int') # === 输出结果 === print(f"🎯 聚类完成!共分为 {optimal_k} 类:") print(data['Cluster'].value_counts().sort_index()) # print(data[['multiple_deliveries', 'Delivery_Distance']].dtypes) # # data['multiple_deliveries'] = pd.to_numeric(data['multiple_deliveries'], errors='coerce') # data['Delivery_Distance'] = pd.to_numeric(data['Delivery_Distance'], errors='coerce') # data['Time_taken(min)'] = pd.to_numeric(data['Time_taken(min)'], errors='coerce') # data['Order_Hour'] = pd.to_numeric(data['Order_Hour'], errors='coerce') # # for col in numeric_columns: # data[col].fillna(data[col].mean(), inplace=True) # print(data[numeric_columns].dtypes) # # print(data[['multiple_deliveries', 'Delivery_Distance']].dtypes) # 各簇特征均值 cluster_profile = data.groupby('Cluster')[cluster_features].mean() print("\n📌 各类特征均值对比:") print(cluster_profile.round(2)) # === 可视化聚类结果 === # plt.figure(figsize=(8, 6)) # sns.scatterplot( # data=data, # x='Delivery_Distance', # y='Time_taken(min)', # hue='Cluster', # palette='Set1', # alpha=0.7 # ) # plt.title('K-Means Clustering: Delivery Distance vs Time Taken') # plt.xlabel('配送距离 (km)') # plt.ylabel('配送时间 (分钟)') # plt.legend(title='簇编号') # plt.grid(True) # plt.tight_layout() # plt.show() print("\n🎉 聚类分析成功完成!") C:\Users\32773\.conda\envs\mining\python.exe "C:\Users\32773\Desktop\外卖消费行为处理好的数据1\外卖消费行为处理好的数据\data mining.py" 数据加载完成:45593 行 × 18 列 开始:关联规则挖掘(购物篮分析思想) 发现 212 条强关联规则(confidence ≥ 0.5): 若 Order_Period_下午茶 → 则 Festival_No 且 Road_traffic_density_Medium (支持度=0.125, 置信度=0.857, 提升度=3.626) 若 Festival_No 且 Road_traffic_density_Medium → 则 Order_Period_下午茶 (支持度=0.125, 置信度=0.529, 提升度=3.626) 若 Festival_No 且 Order_Period_下午茶 → 则 Road_traffic_density_Medium (支持度=0.125, 置信度=0.869, 提升度=3.620) 若 Road_traffic_density_Medium → 则 Festival_No 且 Order_Period_下午茶 (支持度=0.125, 置信度=0.521, 提升度=3.620) 若 Order_Period_下午茶 → 则 Road_traffic_density_Medium (支持度=0.127, 置信度=0.868, 提升度=3.616) 若 Road_traffic_density_Medium → 则 Order_Period_下午茶 (支持度=0.127, 置信度=0.527, 提升度=3.616) 若 Order_Period_早餐 → 则 Festival_No 且 Road_traffic_density_Low (支持度=0.125, 置信度=0.990, 提升度=2.950) 若 Order_Period_早餐 → 则 Road_traffic_density_Low (支持度=0.126, 置信度=1.000, 提升度=2.946) 若 Order_Period_早餐 且 Festival_No → 则 Road_traffic_density_Low (支持度=0.125, 置信度=1.000, 提升度=2.946) 若 Road_traffic_density_Jam 且 Type_of_vehicle_motorcycle → 则 Order_Period_晚餐 且 City_Metropolitian (支持度=0.143, 置信度=0.791, 提升度=1.610) 开始:分类模型构建 —— 预测配送时间等级 分类性能报告: precision recall f1-score support Short 0.79 0.76 0.77 3150 Medium 0.63 0.71 0.67 3004 Long 0.90 0.82 0.85 2965 accuracy 0.76 9119 macro avg 0.77 0.76 0.77 9119 weighted avg 0.77 0.76 0.77 9119 ------------------------------------------------------------ 📊 开始:聚类分析 —— 订单行为分群 Cleaning Delivery_person_Ratings with custom parser... 🔍 清洗后数据类型: Delivery_person_Ratings float64 Delivery_Distance float64 multiple_deliveries float64 Time_taken(min) float64 Order_Hour int64 dtype: object 🧩 缺失值统计(清洗后): Delivery_person_Ratings 1908 Delivery_Distance 0 multiple_deliveries 993 Time_taken(min) 0 Order_Hour 0 dtype: int64 ✅ 数据清洗完成,共 45593 个样本 🎯 聚类完成!共分为 3 类: Cluster 0 12727 1 32704 2 162 Name: count, dtype: int64 Traceback (most recent call last): File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\groupby\groupby.py", line 1944, in _agg_py_fallback res_values = self._grouper.agg_series(ser, alt, preserve_dtype=True) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\groupby\ops.py", line 873, in agg_series result = self._aggregate_series_pure_python(obj, func) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\groupby\ops.py", line 894, in _aggregate_series_pure_python res = func(group) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\groupby\groupby.py", line 2461, in <lambda> alt=lambda x: Series(x, copy=False).mean(numeric_only=numeric_only), ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\series.py", line 6570, in mean return NDFrame.mean(self, axis, skipna, numeric_only, **kwargs) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\generic.py", line 12485, in mean return self._stat_function( ~~~~~~~~~~~~~~~~~~~^ "mean", nanops.nanmean, axis, skipna, numeric_only, **kwargs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\generic.py", line 12442, in _stat_function return self._reduce( ~~~~~~~~~~~~^ func, name=name, axis=axis, skipna=skipna, numeric_only=numeric_only ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\series.py", line 6478, in _reduce return op(delegate, skipna=skipna, **kwds) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\nanops.py", line 147, in f result = alt(values, axis=axis, skipna=skipna, **kwds) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\nanops.py", line 404, in new_func result = func(values, axis=axis, skipna=skipna, mask=mask, **kwargs) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\nanops.py", line 720, in nanmean the_sum = _ensure_numeric(the_sum) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\nanops.py", line 1701, in _ensure_numeric raise TypeError(f"Could not convert string '{x}' to numeric") TypeError: Could not convert string '4.54.74.64.84.24.744.24.94.14.344.344.13.54.64.3NaN 4.74.84.24.44.64.54.14.64.74.44.64.24.44.64.34.23.84.94.24.74.94.64.24.13.94.644.44.14.84.34.74.6NaN 4.94.73.94.74.344.14.643.94.84.54.14.44.64.74.84.44.74.644.84NaN 4.44.24.24.94.44.94.14.34.54.94.74.14.44.53.84.44NaN 3.94.34.64.74.54.44.44.24.53.94.6NaN 44.54.14.13.73.8444.84.84.34.24.22.64.34.94444.94.84.64.44.14.44.74.954.94.84.24.44.34.743.54.64.73.74.64.554.74.24.44.94.74.23.84.14.34.153.544.54.14.14.54.14.34.84.74.84.32.53.63.94.83.944.34.13.53.64.44.64.14.34.24.24.94.454.24.84.73.94.844.74.43.83.54.24.444.84.64.94.44.84.24.94.44.94.14.64.154.34.44.14.94.14.244.94.44.54.34.64.54.93.94.154.24.84.254.73.844.73.84.44.14.13.64.74.9NaN 4.14.24.34.14.14.24.454.84.94.34.42.54.63.74.74.14.44.34.54.34.254.34.74.33.53.84.64.64.44.94.84.84.94.13.84.54.64.94.34.64.24.64.64.84.64.15NaN 44.54.34.64.244.14.6444.64.24.44.64.14.34.8NaN 4.74.44.544.84.44.34.84.14.54.54.554.94.14.14.34.64.34.9NaN 4.84.544.2444.54.74.94.74.24.3NaN 4.14.84.34.84.14.454.544.33.74.34.94.44.94.84.64.72.54.64.64.64.64.14.14.644.64.74.62.644.944.24NaN 4.544.644.24.544.13.144.54.34.44.1NaN 3.54.84.94.74.14.34.74.94.3NaN 4.44.94.93.84.94.64.64.84.244.24.84.72.7NaN 4.14.94.44.84.14.244.44.54.64.64.34.73.54.454.44.13.54.14.84.54.13.84.73.754.84.64.64NaN 4.23.64.64.84.44.24.54.14.54.83.84.44.44.24.64.34.34.44.74.34.33.53.54.74.854.144.94.54.84.34.64.14.83.544.84.44.44.93.63.53.84.34.94.14.24.64.84.64.14.554.84.34.73.94.744.54.64.84.84.54.64.74.33.9NaN 4.144.6NaN 4.33.94.34.33.73.844.74.44.444.94.14.14.2NaN 4.84.34.353.64.343.84.64.54.244.4NaN 4.54.34.14.8NaN 4.4NaN NaN 4.22.64.44.44.13.63.54.14.94.14.64.94.74.74.74.74.64.44.344.64.14.244.14.64.54.54.24.94.54.64.44.64.33.84.64.14.44.94.64.144.74.33.64.54.24.44.1NaN 4.14.74.64.94.74.24.643.14.44.14.44.84.84.94.64.44.94.34.64.44.84.64.24.24.14.54.24.644.54NaN 4.24.94.74.34.64.14.54.94.44.43.8NaN 144.44.44.94.33.54.24.24.94.44.954.54.84.84.34.44.44.84.14.44.64.24.944.24.74.44.43.74.24.244.44.83.84.24.74.24.74.2544.64.24.13.14.24.34.14.143.54.64.44.54.64.244.84.24.64.54.65NaN 4.14.64.44.44.14.93.84.44.744.14.14.1NaN 4.14.63.544.12.5NaN 4.14.24.24.13.94.54.84.44.34.24.64.54.73.74.54.54.64.94.24.74.54.23.94.4444.7NaN 4.44.94.94.64.44.44.34.32.54.34.44.44.44.544.34.44.84.44.154.64.94.24.13.54.714.64.54.14.14.24.744.34.64.814.63.64.344.84.4543.54.14.34.2444.83.54.34.44.74.14.44.64.34.84.44.454.24.64.44.24.24.42.74.74.8NaN 4.74.14.5NaN 4.64.44.354.64.34.14.74.643.94.24.63.944.94.44.74.13.54.244.64.13.64.34.444.144.93.74.44.34.24.14.54.254.13.84.34.43.74.6NaN 4.64.23.54.444.64.44.74.64.14.84.34.24.64.74.34.63.64.74.64.33.5NaN 554.14.24.64.74.34.344.3NaN 44.444.74NaN 4.64.23.1454.64.94.24.44.744.64.84.44.14.64.14.73.54.44.44.33.53.23.34.6NaN 4.64.654.22.74.44.64.73.54.14.844.34.24.94.444.54.64.14.54.24.33.8444.33.64.6444.74.14.14.64.64.74.94.94.54.14.44.63.14.64.74.93.84.644.44.34.43.73.94.53.84.14.24.64.1NaN 4.64.54.34.64.54.2NaN 3.654.24.34.64.84.64.54.454.44.13.5NaN 4.23.84.54.54.94.6454.54.7NaN 4.2NaN 4.44.44.64.24.34.34.54.54.44.24.64.64.24.24.64.74.94.74.53.54.13.74.3454.44.14.64.84.64.74.64.54.44.7NaN 4.34.74.24.54.54.72.63.14.64.94.14.83.64.24.33.74.34.34.54.44.844.52.64.344.33.54.64.154.14NaN 3.64.34.34.64.54.64.14.14.14.63.54.54.94.14.654.74.84.44.34.24.24.24.34.84.244.34.44.3NaN 4.14.143.94.54.74.74.83.84.14.44.454.74.64.34.444.44.1444.14.94.54.44.74.64.64.74.8NaN 4.64.444.54.84.64.2454.64.34.24.43.64.44.24.34.94.94.94.6NaN 4.34.74.64.2NaN 4.14.94.84.73.74.943.54.454.94.44.64.14.44.64.94.84.34.34.64.44.44NaN 4.84.34.74.94.34.74.1NaN 4.14.844.64.24.64.944.74NaN 4.74.84.23.74.84.44.44.84.64.74.14.33.94.34.64.73.73.44.74.84.64.54.14.14.74.14.144.64.8NaN 4.24.54.54.14.34.94.24.64.24.7NaN 4.143.63.84.24.654.34.14.43.84.44.84.53.74.64.24.84.74.64.64.84.94.94.34.14.84.24.14.154.14.74.84.454.14.44.24.94.24.34.644.44.43.94.54.34.13.44.2454.44.14.44.64.24.34.23.54.43.64.14.14.44.74.44.74.34.2NaN 4.74.63.74.34.14.74.34.14.24.64.84.74.34.64.54.74.24.24.94.74.14.74.44.844.24.23.73.24.14.44.14.64.44.63.74.74.44.84.94.33.84.44.14.354.744.33.7444.14.354.34.94.82.74.14.44.84.544.44.34.14.33.64.44.94.84.4NaN 4.94.844.84.14.54.54.64.43.73.74.14.12.84.944.24.14.44.94.33.54.844.54.94.34.444.54.94.9NaN 4.14.33.53.84.13.73.84.14.24.74.14.34.84.74.443.54.64.34.443.54.14.54.24.54.144.74.24.84.34.44.444.14.64.54.14.34.24.544.84.94.7NaN 4.23.8NaN 3.34.24.14.74.24.74.54.14.74.34.34.64.64.53.554.854.94.64.34.64.14.34.14.44.3NaN 54.54.44.54.44.14.14.64.344.14.64.24.44.14.74.24.144.94.13.84.84.94.54.24.74.13.94.42.84.1NaN 3.744.23.24.14.23.74.94.2444.943.94.44.84.24.63.44.544.34.344.84.14.13.94.843.54.24.344.54.254.44.23.54.54.64.84.214.14444.14.74.34.84.64.24.94.254.34.83.9NaN 4.84.14.74.84.54.34.84.74.93.344.74.74.44.74.24.43.94.14.14.54.24.24.24.54.94.64.14.94.74.64.43.74.44.13.34.44.34.14.442.94NaN 3.54.13.83.64.64.74.14.14.14.94.2NaN 4.34.84.24.34.34.74.444.44.24.344.34.44.74.344.6NaN 4.24.24.54.2NaN 4.64.74.74.554.54.654.24.554.13.5544.74.43.84.44.63.84.854.944.64.94.83.84.84.6NaN 4.24.64.44.24.64.94.544.74.154.94.84.44.444.44.54.53.54.74.64.244.44.53.74.643.54.34.84.34.34.84.544.554.454.24.24.24.84.94.84.64.3NaN 44.64.94.64.54.74.44.84.54.14.34.14.54.24.74.74.64.34.84.6NaN 54.44.74.64.64.13.94.64.24.63.84.94.94.32.94.353.74.154.53.84.34.34.9NaN 4.94.54.24.24.44.84.1NaN 4.24.84.14.54.1443.954.14.63.5444.14.6NaN 4.34.14.54.24.74.24.94.94NaN 44.74.44.84.74.64.54.14.34.54.84.34.64.24.64.6NaN 4.24.74.24.74.34.34.74.94.444.14.444.54.54.84.14.84.14.34.23.83.64.944.7NaN 4.94.74.54.84.24.83.8NaN 3.83.64.24.34.144.44.24.844.744.84.54.34.54.7NaN 44.44.33.64.34.74.53.84.14.94.44.84.2NaN 4.34.14.24.94.94.6NaN 4.84.54.74.6NaN 4.84.644.43.64.944.44.14.44.64.23.54.64.944.83.34.14.64.64.74.44.444.54.34.64.744.24.14.54.63.944.24.94.24.64.34.64.44.3NaN 4.84.3444.94.74.74.24.43.64.34.34.14.74.44.64.74.44.64.74.44.43.83.84.54.64.63.64.94.14.24.5NaN 44.14.24.64.24.14.944.64.34.24.94.54.34.14.14.24.23.94.84.74.24.94.44.94.244.14.354.14.64.34.943.74.44.54.13.54NaN 4.84.2NaN 4.44.63.244.94.64.5NaN 4.93.744.24.84.73.54.94.64.94.94.64.44.64.644.14.64.14.64.34.24.84.44.74.844.23.8NaN 4.14.8NaN 4.24.83.74.14.24.74.14.44.44.84.32.94.34.144.44.83.44.24.34.74.34.14.24.44.54.84.34.54.8NaN 4.34.24.743.64.34.64.14.84.14.554.74.14.84.94.14.14.54.64.14.74.74.14.34.44.74.44.83.53.64.64.54.14.34.24.54.44.34.34.33.644.22.5NaN 4.54.74.44.64.24.94.14.54.744.64.14.24.14.14.14.14.64.9NaN 44.54.84.64.44.84.44.14.354.24.2544.74.74.23.54.14.14.53.54.74.44.34.64.73.74.94.64.14.2NaN 4.444.14.64.24.23.74.14.64.94.74.44.23.43.64.34.44.24.43.84.94.34.84.74.14.94NaN 4.44.94.74.54.84.74.24.14.13.54.54.73.23.64.44.54.24.54.34.74.14.654.544.34.14.24.34.24.14.13.64.24.24.44.64.14.44.14.44.54.3NaN NaN 4.74.64.744.344.44.84.84.34.54.74.44.14.254.754.14.84.154.54.943.54.54.13.64.64.444.64.34.34.73.64.44.74.14.24.144.14.14.244.24.64.64.44.84.454.34.94.34.44.44.23.54.354.9NaN NaN 4.64.54.24.74.94.64.23.9NaN 4.344.94.74.24.94.64.53.64.134.74.64.24.24.64.34.13.94.74.53.72.64.8454.34.64.34.54.54.94.24.24.64.23.94.14.454.44.64.654.83.84.44.64.54.23.94.64.44.444.6NaN 4.44.64.84.14.7NaN 4.844.644.44.84.34.74.24.84.84.74.24.24.84.24.44.13.74.74.74.354.84.73.754.344.44.64.14.24.444.34.64.74.53.84.24.64.54.13.94.84.34.4NaN 4.44.23.53.54.34.14.24.44.444.94.34.94.444.84.54.64.84.34.5NaN NaN 4.64.54.14.94.244.84.444.64.213.654.54.74.54.34.34.8544.74.3NaN 4.1NaN 54.24.63.74.64.74.43.9NaN 4.23.54.74.34.24.54.64.94.954.44.34.14.94.83.54.74.74.74.64.94.644.14.943.744.44.24.14.64.24.64.94.44.744.54.63.14.244.34.83.5NaN 4.44.24.12.73.13.34.94.74.74.44.94.54.44.44.34.14.14.24.44.14.34.44.73.14.43.74.34.8NaN 4.342.73.84.64.13.63.64.44.34.14.14.14.74.6NaN 4.3NaN 4.24.54.54.54.34.8NaN 3.8544.74.74.24.24.24.64.44.14.64.33.64.944.23.64.744.14.94.64.54.443.83.14.8NaN 4.14.14.64.2NaN 4.94.64.14.43.94.54.1NaN 3.63.74.84.63.74.34.54.5453.54.74.64.54NaN 44.144.14.74.63.94.6454.64.1NaN 3.64.53.54.74.73.74.64.64.14.14.44.84.443.24.53.54.24.54.24.53.84.64.74.23.24.34.34.43.94.44.74.24.94.14.13.74.54.83.64.34.24.144.24.74.64.54.444.34.64.44.244.44.7444.63.64.24.44.24.24.34.84.43.74.64.54.154.14.74.34.74.24.34.84.24.24.54.34.14.14.64.34.94.44.74.64.74.24.54.93.54.24.24.82.5NaN NaN 4.24.44.53.64.13.24.74.14.7NaN 4.34.24.354.34.84.654.44.74.74.14.83.93.543.64.94.144.44.14.74.84.64.64.84.84.443.74.644.14.44.74.84.94.24.84.14.2NaN 4.44.9NaN 4.14.74.84.14.24.14.6544.24.44.34.94.44.94.64.64.84.4554.94.64.44.33.64.34.24.64.14.15544.84.34.64.84.5NaN 4.74.64.34.84.34.34.24.43.44.74.34.74.24.74.64.34.5444.34.44.54.64.34.43.94.64.544.444.54.24.24.14.94.84.74.6NaN 4.84.94.74.14.14.74.43.14.84.73.54.24.24.44.63.64.13.644.7NaN NaN 4.34.64.644.64.62.64.74.24.3NaN 4.94.754.44.74.33.74.54.74.13.64.54.14.34.64.44.34.94NaN 4.54.14.94.74.94.93.14.44.64.84.34.34.24.24.44.24.24.154.94.64.74.24.63.64.54.24.314.64.54.544.84.153.84.64.13.93.94.24.6NaN 4.34.34.54.34.24.44.14.84.44.144.14.54.63.74.84.44.24.14.24.144.24.74.24.34.83.54.34.54.64.94.1NaN 4.94.72.74.44.24.24.44.94.34.24.63.54.13.64.34.644.34.244.34.64.84.84.44.1NaN 4.74.744.64.94.73.43.554.14.254.84.64.84.74.353.94.32.93.5NaN 4.64.64.64.24.63.8NaN 4.34.5NaN 4.64.34.74.3NaN 4.84.24.44.84.44.14.84.44.64.43.94.643.63.23.94.34.94.44.5NaN 4.9NaN 4.34.24.44.74.74.64.64.14.554.64.64.24.44.34.24.844.23.95NaN 4.83.94.24.44.83.65544.64.14.24.64.44.54.14.14.84.84.954.644.84.7554.64.14.553.74.44.84.33.74.74.73.64.64.95NaN 4.64.64.44.544.954.93.74.63.84.14.14.44.14.444.14.24.34.454.94.34.53.54.14.64.144.34.34.74.64.74.23.84.84.6NaN 4.14.84.13.54.14.14.354.13.54.43.54.14.63.54.24.43.34.94.74.64.54.64.14.254.64.84.14.24.64.83.24.34.83.74.73.94.44.54.94.94.74.33.84.64.14.454.2554.84.14.14.1NaN 4.84.94.44.243.94.94.84.244.74.84.14.14.54.74.14.14.84.64.24.44.84.13.952.74.83.5415NaN 4.14.92.94.74.84.84.144.64.2NaN 4.14.64.14.24.24.14.94.244.24.54.34.43.24.44.13.53.44.74.84.54.74.5NaN 54.34.24.24.74NaN 4.744.54.544.44.64.34.4NaN 4.54.84.6NaN 3.74.24.54.24.34.84.754.64.64.53.64.64.14.74.44.64.14.34.14.2NaN 4.74.64.24.14.84.33.74.74.354.24.53.94.64.9543.8NaN 4.6544.24.34.64NaN 4.13.544.24.744.6NaN 4.6NaN 54.74.74.94.33.84.34.54.33.73.64.34.94.63.44.84.74.143.82.54.24.34.54.44.74.34.44.84.84.83.54.54.84.44.84.14.64.44.54.34.443.7NaN 4.64.64.44.34.24.444.44.44.24.44.43.854.44.84.24.244.54.2NaN 4.94.84.64.84.64.94.74.94.44.44.24.1NaN 43.64.44.64.24.64.14.844.23.844.24.54.54.244.64.64.84.84.74.84.644.34.54.2NaN 4.14.44.14.54.84.3NaN 4.64.14.64.14.254.84.24.54.32.84.44.154.34.82.644.14.34.14.64NaN 5NaN 4.44.143.74.144.33.54NaN 43.64.53.93.74.14.644.94.94.34.54.644.34.344.64.94.24.44.34.2NaN 4.24.33.74.34.44.54.843.744.74.33.93.94.14.84.84.94.44.14.34.74.144.54.14.4NaN 4.44.24.14.1544.83.844.64.44.4NaN 4.354.43.64.34.94.74.74.83.64.654.34.14.64.63.63.84.54.64.14.24.24.23.74.454.64.44.1NaN NaN 4.34.43.94.74.44.63.84.74.94.14.43.54.34.94.24.24.24.14.64.34.14.94.64.74.74.84.34.5NaN 4.34NaN 4.64.8NaN 4.84.74.43.64.63.84.23.43.84.24.64.14.44.644.44.74.14.14.34.74.83.854.954.84.653.54.14.34.24.64.24.34.554.14.44.84.24.444.14.54.64.34.34.24.94.94.14.844.64.74.2NaN 4.24.64.74.74.24.24.444.64.443.54.853.84.84.64.144.14.44.13.74.84.74.74.24.64.14.14.94.94.34.544.54.1NaN 54.14.64.84.83.64.64.44.14.24.34.74.74.14.24.6444.644.34.44.84.34.34.24.944.14.34.34.144.64.54.74.33.64.14.2NaN 3.74.94.74.24.64.1NaN 4.34.14.64.64.44.64.44.74.44.644.34.14.24.34.24.24.24.44.64.94.14.74.24.744.54.84.84.94.454.244.14.44.84.24.44.14.14.54.23.54.94.43.64.73.64.64.24.54.23.654.54.14.43.84.24.74.44.244.24.44.64.84.44.44.54.94.94.74.14.34.34.54.23.84.64.13.54.34.54.83.94.54.24.44.44.54.34.34.74.64.64.24.644.34.94.64.53.74.14.14.84.74.24.94.64.14.44.6544.34.244.74.63.544.64.93.74.64.74.64.44.24.83.7NaN 4.553.74.13.94.844.64.5544.14.74.24.24.63.54.43.54.8NaN 4.244.254.34544.24.34.24.24.34.14.34.34.74.94.84.64.74.3NaN 4.34.144.24.643.95NaN 4.74.13.44.34.64.944.63.93.754.14.34.54.34.144.64.1NaN 4.14.64.74.43.8444.24.44.444.74.444.3NaN 4.64.84.14.84.24.244.94.63.54.94.24.63.64.14.83.844.154.24.43.74.94.34.24.54.14.34.94.24.2454.64.34.54.84.24.74.74.3NaN 4.23.74.24.14.43.74.44.64.44.64.14.74.844.34.34.33.84.64.14.14.34.14.34.64.34.24.454.444.1444.43.74.24.44.34.7NaN 4.254.74.64.5144.14.44.34.6NaN 3.644.74.64.54.24.44.43.24.754.64.254.6NaN 4.24.4442.84.54.154.64.14.94.94.44.844.64.64.74.84.44.64.94.844.14.14.54.84.44.9NaN 44.44.24.14.244.24.84.94.254.54.64.74.34.34.944.14.34.24.54.6NaN 43.54.63.74.84.74.33.54.7444.14.954.544.24.63.64.64.644.73.64.63.9NaN 4.14.54.44.64.34.7444.3NaN 3.94.14.64.24.14.54.444.14.44.24.8NaN 4.44.14.34.84.64.94.14.74.9NaN 4.34.84.944.44.453.94.9NaN 3.94.24.14.34.64.14.84.74.63.84.44.74.14.63.64.24.74.24.14.14.73.84.14.24.34.154.44.73.754.14.34.74.64.34.94.44.44.64.954.64.44.34.74.34.64.154.614.14.64.64.24.24.94.54.53.14.84.63.74.94.44.54.93.64.43.64.14.74.24.3NaN 4.34.744.64.74.44.94.64.33.54.644.54.34.53.813.84.14.74.64.54.344.14.13.84.63.54.14.44.5NaN 4.84.74.13.93.64.74.64.44.44.74.44.44.53.84.14.43.544.54.53.83.24.44.34.144.44.94.14.24.14.64.64.24.24.74.743.53.754.14.24.64.33.14.64.8NaN 4.34.14.24.84.14.84.44.24.74.74.63.5NaN 4.34.44.83.84.33.444.24.94.74.84.74.44.84.3NaN 4.24.83.94.34.44.54.44.34.24.64.24.244.2NaN 4.54.914.34.94.74.74NaN 4.54.1444.54.2NaN 44.844.54.84.3NaN 4.34.34.74.34.34.33.84.54.44.444.14.74.94.24.24.74.24.653.64.44.14.63.94.143.53.94.84.444.74.23.74.62.74.644.353.74.54.24.34.44.33.7NaN 4.14.64.94.64.74.34.74.54.24.83.54.7NaN 4.64.94.44.644.4NaN 44.64.34.744.54.43.94.34.24.74.84.64.84.54.14.954.34.44NaN 4.54.34.24.64.244.24.94.24.64.24.64.64.84.743.84.24.84.14.84.74.33.93.84.644.4NaN 4.94.54.94.944.34.64.744.2NaN 4.54.63.84.44.444.44.44.24.13.64.24.24.44.14.54.14.14.954.454.74.34.64.34.13.54.94.64.644.14.34.1NaN 4.144.34.84.24.74.84.24.94.2NaN 4.44.74.24.44.44.84.14.644.54.854.84.74.14.14.24.34.53.84.844.64.144.344.54.34.6NaN 42.74.34.34.34.44.144.94.84.74.64.74.84.74.24.34.54.444.84444.44.84.73.24.24.244.24.44.74.94.84.84.14.44.74.24.7NaN 4.34.34.94.24.73.64.54.3NaN 4.53.94.94.34.1NaN 44.64.63.7554.44.24.53.83.654.344.34.64.84.1444.94.44.44.44.24.34.24.853.74.84.3NaN 54.94.44.14.24.34.34.3NaN 4.24.33.93.94.64.34.444.74.54.844.54.53.83.54.754.3NaN 4.63.64.34.344.44.63.74.44.14.14.844.14.43.14.644.34.24.73.94.64.14.84.74.14.83.94.64.54.644.244.84.14.34.34.34.54.24.44.34.34.23.54.34.94.44.24.34.94.94.94.54.54.24.64.14.554.44.24.84.34.444.44.4NaN NaN 4.744.4NaN 4.24.44.54.64.14.74.94.74.54.24.64.44.24.654.73.74.34.84.94.94.644NaN NaN 4.44.74.34.5NaN 4.35NaN 4.14.14.64.74.14.74.64.54.14.84.64.94.644.84.24.34.64.64.2NaN 4.144.43.34.14.64.24.94.14.44.24.154.14.94.234.14.24.54.64.33.5NaN 3.74.44.13.83.74.34.44.14.24.84.34.74.64.244.74.64.354.33.84.24.44.244.34.84.84.64.24.64.24.544.84.12.53.9NaN 4.254.44.24.1444.54.24.24.34.64.254.83.64.24.2NaN 553.74.94.24.34.14.34.14.6NaN 4.64.34.84.5NaN 3.74.14.13.83.64.14.13.54.15NaN 4.54.23.54.34.94.654.34.74.64.84.24.64.43.54.944.43.74.544.8NaN 4.74.74.64.94.74.44.44.13.92.84.84.44.74.53.54.34.14.43.74.74.94.23.14.24.54.14.44.43.744.84.544.34.73.83.74.24.14.54.44.43.94.644.54.44.34.24.74.944.14.64.644.644.14.34.34.94.14.73.54NaN 4.64.24NaN 4.24.34.73.54.24.14.94.34.34.13.84.1NaN 4.74.53.84.64.24.33.64.73.64.13.94.14.34.54.33.8NaN 4.654.14.74.74.64.453.54.13.83.54.24.544.24.6NaN 2.93.84.44.44.54.24.24.23.24.24.34.64.43.34.644.84.14.64.94.64.9NaN 4.23.54.554.74.94.84.444.24.844.64.44.34.64.1NaN 4.844.43.63.5454.64.34.64.54.94.74.64.44.84.14.14.14.444.94.94.63.94.64.84.144.4444.4NaN 4.14.64.74.74.344.44.8NaN 4.84.2NaN 4.73.64.74.44.94.14.44.94.854.34.954.34.944.23.73.64.53.54.94.64.344.24.54.33.14.74.14.24.34.53.64.34.44.754.54.754.33.84.6NaN 4.44.14.34.34.64.93.84.84.444.14.84.64.544.23.64.54.64.74.9444.34.34.54.64.34.24.63.94.6NaN 4.84.54.34.74.54.44.14.64.54.64.34.14.93.94.454.44.63.954.54.44.64.14.34.44.64.13.644.24.24.94.84.3NaN 4.34.34.24.754.74.23.83.74.54.93.744.34.44.644.94.35534.84.23.44.14.94.64.7NaN 4.33.74.44.94.24.44.944.14.54.34.14.94.64.13.64.44.34.644.34.34.54.34.14.2NaN 4.64.24.44.34.7NaN 4.84.74.5NaN 4.94.94.144.14.54.14.44.94.74.64.12.74.744.64.14.24.44.14.64.93.54.1NaN 4.64.54.64.954.44.84.54.34.14.84.84.24.24.84.24.84.74.644.54.64.64.34.44.14.44.14.54.24.44.74.44.93.84.63.54.14.14.64.34.244.24.14.44.84.24.84.23.94.93.84.83.93.84.954.64.84.73.84.64.944.24.64.244.94.64.24.34.54.74.93.53.7NaN 43.23.44.64.84.34.24.4NaN 44.44.344.2NaN 4.44.94.84.84.64.4NaN 4.34.2NaN 4.644.7NaN 4.84.24.64.14.13.54.74.43.64.24.34.14.74.34.33.64.64.34.34.84.44.94.73.84.34.74.24.54.24.644.94.14.44.9444.34.74.54.844.14.44.14.94.844.354.74.72.54.14.14.54.44.44.64.64.74.14.73.94.73.84.44.24.34.24.94.74.54.34.244.24.64.64.34.54.44.64.44.34.33.74.94.144.74.74.654.84.14.14.74.14.644.34.14.744.344.14.24.44.5NaN 4.654.74.64.64.64.24.24.94.84.24.644.64.14.34.14.44.64.64.34.34.74.64.13.84.94.24.14.74.34.34.44.344.74.14.64.54.83.83.63.54.43.754.54.54.344.23.53.34.84.24.84.244.44.54.14.14.74.44.94.8NaN 3.84.14.74.24.44.34.33.64.64.44.14.74.43.74.84.44.844.64.144.64.64.614444.13.54.64.53.94.64.24.654.13.24.14.24.9NaN 4NaN 4NaN 3.82.944.54.82.74.14.14.94.154.14.64.64.24.34.33.84.84.454.34.944.74.84.4NaN 4.644.14.44.74.24.74.8NaN 3.94.34.34.14.344.14.94.34.84.54.74.64.94.53.54.854.44.54.53.74.24.34.24.24.24.144.74.22.74.64.63.94.154.344.34.644.74.653.82.643.44.14.24.94.2544.24.64.44.23.34.744.24.33.54.74.14.8444.54.14.64.34.64.64.14.64.14.44.54.14.14.4454.44.84.84.63.74.74.153.94.44.74.24.44NaN 4.64.64.44444.14.94.32.8NaN 4.44.63.83.64.14.14.64.33.84.24.44.24.34.344.14.54.94.14.84.94.34.7444.24.23.544.34.52.84.14.34.24.743.54.14.94.14.44.83.94.444.44.14.64.74.34.644.64.74.24.14.54.14.14.754.1NaN 4.843.24.34.74.64.44.54.74.94.14.443.74.74.94.54.14.64.84.23.74.34.44.944.84.63.54.64.74.1NaN 4.24.14.74.34.24.14.14.14.14.63.5NaN 4.44.14.44.64.64.54.64.13.14.64.13.63.84.44.144.14.84.54.24.84.84.74.64.34.23.7454.84.13.74.33.64.644.64.34.24.64.54.14.34.94.84.14.64.44.44.24.54.34.23.44.74.34.53.74.14.64554.84.14.744.74.74.2NaN 4.24.23.7444.94.344.444.34.64.84.93.54NaN 4.14.24.74.94.24.44.74.24.84.74.3NaN 4.84.44.73.54.54.13.94.644.544.24.543.94.34.44.14.14.24.34.24.54.74.954.254.34.144.444.34.44.444.94.54.74.344.854.44.144.84.84.944.14.24.14.94.44.6NaN 4.64.64.64.24.34.14.82.84.44.73.64.64.54.74.33.94.14.353.944.64.24.64.64.14.94.44.954.14.84.74.74.34.83.84.63.93.54.54.23.64.24.44.54.154.94.54.74.64.34.14.54.64.354.64.44.74.3154.14.34.64.34.544.24.4NaN 53.14.24.2NaN 4.83.94.74.23.94.64.83.34.34.654.14.54.14.93.6NaN 4.754.24.54.64.44.84.85NaN 4.24.14.94.34.34.644.34.94.44.73.84.854.6NaN 3.84.84.54.64.64.6NaN 4.63.54.944.24.14.744.74.74.74.64.24.24.23.54.74.44.14.63.74.34.24.54.74.34.54.8NaN 4.83.64.4NaN 4.24.14.24.94.63.94.74.72.84.64.24.654.64.63.53.5NaN 4.84.614.34.34.14.34.14.64.94.34.64.64.14.1NaN 44.34.84.14.144.64.44.344.34.244.44.24.24.94.64.94.3NaN 4.24.94.24.24.844.84NaN 4.213.74.85NaN 4.24.74.3NaN 4.954.14.44.14.73.54.554.84.74.64.14.64.84.64.54.54.64.354.84.6444.74.24.13.6544.34.34.34.54.63.94.24.14.93.344.14.843.144.54.2NaN 4.14.74.84.44.74.14.9NaN 4.64.15444.34.34.64.64.34.8444.24.34.74.24.13.9NaN 4.344.34.94.84.94.8444.14.24.23.54.1453.54.34.53.74.64.74.642.64.34.64.34.82.64.33.74.64.93.64.24.1NaN 4.7NaN 4.24.94.454.34.44.24.944.14.44.14.644.8NaN 4.64.84.64.54.94.34.34.44.14.64.74.74.74.44.14.14.24.844.54.3NaN 4.9NaN 3.94.54.8444.44.14.74.34.74.32.54.854.34.34.34.34.14.24.64.1NaN 4.244.13.954.14.84.6544.944.74.14.94.8544.14.34.24.14.34.744.93.34.74.64.944.44.64.3454.54.34.84.24.83.554.34.44.24.24.74.14.14.44.34.84.14.74.54.64.3NaN 4.953.63.84.24.64.244.24.654.84.44.24.14.64.14.72.54.14.14.64.93.44.34.343.24.64.24.24.44.74.6NaN 44.83.74.94.84.24.6NaN 4.654.54.444.44.54.14.14.44.74.44.34.34.14.14.94.34.14.54.63.54.64.74.14.73.94NaN 4.34.74.44.74.54.74.44.24.14.343.84.24.14.14.644.24.14.24.64.5NaN 4.74.74.44.84.14.24.64.14.344.84.64.64.544.54.74.744.84.74.54.54.84.94.14.64.74.84.744.95NaN 4.74444.72.84.94.14.34.94.24.84.33.64.84.64.74.24.34.74.844.24.14.63.944.63.54.74.94.44.34.84.13.94.44.14.64.24.14.74.64.14.14.54.64.14.14.14.82.64.54.14.5NaN 4.84.64.24.64.24.94.24.24.64.84.14.64.14.44.44.14.44.14.74.24.93.34.84.44.43.54.64.84.84.74.13.64.64.84.44.94.24.54.74.94.44.73.94.74.644.44.14.14.64.14.54.74.24.34.644.44.64.54.24.154.94.24.24.74.94.14.93.63.644.754.454.7NaN 4.34.74.14.24.44.14.54.74.3NaN 4.63.74.34.74.344.54.64.74.54.74.84.44.63.74.14.144.24.93.644.34.74.14.24.14.44NaN 4.13.54.64.24.64.3554.14.9NaN 4.43.92.84.34.554.64.94.74.94.94.14.94.74.74.44.64.84.24.24.74.44.14.844.23.14.44.54.14.7NaN 4.44.52.6NaN 4.34.34.14.24.34.74.644.93.24.33.54.63.84.644.54.5NaN 4.643.94.94.44.54.64.24.94.14.14.23.74.24.63.9144.254.44.14.44.14.83.54.24.24.23.84.44.64.85NaN 44.454.244.3NaN 4.64.94.344.34NaN 44.8NaN 4.14.34.14.24.14.7NaN 4.24.34.73.244.34.34.64.444.34.84.14.654.64.64.33.554.24.144.24.14.34.353.74.33.743.54.24.94.54.63.64.44.44.44.94.84.94.14.74.74.94.74.64.84.1NaN 4.24.64.24.64.54.84.74.64.74.14.84.24.74.14.4NaN 4.64.14.43.53.54.44.954.24.93.64.54.84.64.74.34.44.74.54.24.44.144.2NaN 4.54.544.84.14.6NaN 4.34.84.34.74.53.64.94.344.64.44.34.74.34.44.84.254.34.63.54.24.34.644.14.74.24.94.254.54.83.83.94.63.54.64.34.64.94.84.1NaN 4.34.44.83.84.34.3NaN 4.53.844.93.64.24.554.24.944.454.64.74.44.34.24.354.64.64.24.44.4554.64.34.74.114.34.14.24.644.83.53.74.14.84.74.7454.24.54.854.74.44.34.64.72.544.74.73.84.34.63.64.34.344.344.74.443.343.54.7NaN 4.13.6444.84.44.94.53.9NaN 4.8NaN 4.74.34.64.44.94.94.64.14.34.64.64.63.644.54.64.24.14.64.914.444.95544.54.64.54.74.23.54.64.454.7NaN 4.854.4NaN 4.14.94NaN 4.14.24.14.144.94.854.454.654.44.12.74.24.64.64.64.54.94.93.5NaN 4.64.24.14.44.34.444.44.44.64.64.844.33.74.13.714.654.2NaN 4.54.64.14.63.64.44.64.94.14.34.54.94.1NaN 4.84.64.54.94.74.24.34.74.94.14.84.24.74.843.54.74.24.64.94.74.54.64.654.554.73.74.854.44.64.24.14.63.5544.64.44.44.14.44.333.74.14.54.744.74.44.24.5NaN 3.74.14.24.24.244.34.64.34.24.44.3NaN 4.73.54.64.24.44.2NaN 4.34.74.74.34.34.24.24.144.54.4NaN 4.34.84.644.44.74.84.7NaN 4.444.34.94.34.24.74.744.23.94.64.14.94.154.13.64.24.24.34.34.44.94.64.84.44.254.34.24.64.33.54.34.244.23.54.44.754.244.444.144.74.73.94.23.54.93.94.54.24.44.44.64.34.44.64.33.94.64.63.94.94.24.14.653.94.44.12.64.63.54.84.14.14.84.84.34.84.44.43.94NaN 4.64.54.94.22.84.3NaN 4.23.63.414.74.1454.54.24.3NaN 14.24.454.44.13.53.54.64.94.34.84.64.54.14.44.74.14.353.64.142.94.34.14.34.63.64.44.14.33.84.7NaN 4.4NaN 4.64.44.14.14.74.34.644.54.82.94.14.6NaN 4.744.144.94.44.94.24.74.64.244.14.14.1NaN 4.74.34.84.44.94.244.34.93.64.34.44.44.24.14.64.64.94.24.44.34.14.74.24.94.14.34.64.14.54.93.6454.24.74.5NaN 4.64.344.34.64.23.64.2NaN 4.54.54.64.154.3554.34.954.74.24.74.84.33.64.344.54.14.24.53.544.34.7NaN 4.14.84.24.44.74.94.444.84.44.2NaN 4.23.344.74.64.14.94.54.64.64.74.64.14.64.64.34.74.14.94.14.74.24.14.14.8NaN 44.64.64.44.64.744.34.64.64.34.44.94.954.244.64.84.64.34.853.74.64.34.53.5NaN 4.644.44.44NaN 4.754.44.24.1NaN 4.3NaN 4.24.34.3NaN 4.14.34.74.34.44.64.43.84.94.24.34.44.24.54.64.94.64.44.64.84.34.954.34.74.84.54.94.64.84.63.64.93.64.24.64NaN 4.53.6NaN 4.154.74.44.24.944.64.83.74.344.54.34.44.4444.14.74.84.54.34.64.74.94.94.243.64.14.44.64.64.544.24.64.74.64.94.24.24.74.44.34.14.8NaN 4.23.24.34.64.44.73.94.144.34.64.14.14.23.64.14.54.34.23.84.14.83.74.63.84.944.34.1NaN 4.54.64.254.64.253.94.24.14.7NaN 4.14.24.33.74.9NaN 4.64.3NaN 4.554.644.64.54.54.34.23.84.34.44.84.64.74.24.33.83.54.12.53.94.34.24.14.6NaN 4.73.74.3NaN 3.93.54.74.14.1NaN 4.14.4NaN 4.14.74.744.94.33.74.14.34.654.2NaN 4.44.254.814.344.94.13.74.74.54.24.24.24.74.54.15NaN 4.94.64.54.34.94.84.64.44.14.64.84.454.54.44.84.44.43.24.34.84.54.94.444.14.2NaN 4.54.84.644.93.34.33.73.54.14.14.14.24.23.54.64.14.34.74.24.34.74.14.54.24.44.94.83.34.74.64.84.64.43.84.83.54.44.24.544444.643.94.6NaN 4.13.744.14.654.14.24.34.84.3NaN 4.24.84.54.14.43.84.34.44.44.64.543.64.33.644.74.64.44.63.84.14.944.34.74.74.3NaN 4.64.64.34.74.83.54.34.34.34.94.54.444.94.64.23.84.84.64.74.954.33.54.34.54.54.644.14.24.63.84.54.44.44.6NaN 4.24.24.44.24.23.74.94.754.14.6NaN 4.44.44.54.654.24.53.54.14.83.543.54.94.44.33.7NaN 4.84.444.34.84.14.34.14.34.44.84.44.24.34.44.34.34.24.5NaN 4.34.6NaN 4.93.74.74.443.954NaN 4.14.753.94.6444.24NaN 3.94.64.34.44.74.4NaN 3.84.24.14.34.74.14.84.34.34.64.24.94.34.744.54.14.44.24.84.34.14.73.74.24.64.8NaN 54.53.64.14.14.74.74.64.12.94.1454.84.64.24.13.84.14.34.94.34.454.73.83.73.63.6454.94.74.94.14.24.74.94.24.14NaN 3.24.1NaN NaN 4.34.54.94.64.74.24.13.94.14.34.644.2NaN 4.34.74.34.84NaN 44.84.74.34.43.94.24.14.54.64.44.14.34.24.94.93.54.53.74.84.44.64.6NaN 4.84.543.44.34.14.844.14.64.554.74.64.44.24.24.24.74.34.94.843.73.84.84.54.74.34.74.94.1NaN 4.64.94.244.63.73.53.143.83.84.33.74.44.74.94.244.94.7NaN 4.1NaN 4.44.844.914.34NaN 4.94.33.84.94.44.74.9NaN 3.84.744.84.84NaN 4.24.94.63.84.44.24.84.14.64.24.64.84.34.24.14.74.83.7NaN 4.23.94.84.644.844.64.14.554.744.74.943.84.14.64.6544.8NaN 4.84.44.44.24.84.54.24.944.1444.5NaN 4.14.64.34.24.54.44.64.44.24.444.23.544.14.84.54.74.14.84.54.23.53.83.84.84.734.33.94.94.644.24.44.84.94.13.7NaN NaN 4.64.14.14.34.74.43.54.44.14.34.64.353.74.64.54.14.93.94.84.23.744.24.3NaN 4.24.44.23.74.64.64.94.84.74.14.24.84.94.64.14.14.54.44.854.243.944.74.344.54.73.34.54.24.84.8NaN 4.754.34.24.54.34.44.73.5444.34.14.23.94.24.63.74.6NaN NaN 4.24.94.34.73.544.54.514.94.153.84.14.84.64NaN 4.54.34.84.64.44.74.14.63.74.14.13.94.44.74.14.24.14.73.84.84.14.44.64.24.64.42.54.34.14.84.44.44.654.34.34.54.43.644.744.24.54.73.74.43.94.73.94.54.84.24.64.54.14.944.84.74.4NaN 4.24.7NaN 4.33.14.844.64.64.14.23.84.63.84.44.53.84.13.8NaN 4.44.4NaN 4.944.14.74.13.84.43.94.63.83.54.34.24.24.5544.54.74.14.14.64.34.24.14.14.7NaN 4.84.24.14.74.64NaN 3.74.34.24.34.34.24.94.43.84.2NaN 44.244.14.34.14.94.93.84.64.13.644.34.6NaN 4.2NaN 44.34.644.74.13.73.654.54.34.14.84.3NaN 3.64.844.53.64.444.744.24.44.644.43.54.24.33.754.84.64.24.34.54.54.644.84.654.34.154.24.44.64.14.94.8NaN 3.64.84.34.53.54.64.64.1NaN 4.44.84.344.34.44.244.24.253.84.14.93.64.74.3NaN 4.74.63.54.73.74.84.74.14.64.254.94.84.64.43.94.23.94.34.44.14.54.94.34.84.54.24.14.3NaN 4.43.84.64.25NaN 4.54.14.33.64.44.3NaN 3.54.73.844.84.24.144.34.844.74.24.64.14.64.14.43.954.754.34.42.54.64.44.94.344.14.94.454.24.23.84.64.24NaN 4.44.64.53.93.74.24.34.7NaN 4.34.54.144.24.44.14.74.14.64.514.74.44.64.444.44.74.654.33.54.44.44.74.84.14.24.644.254.44.24.14.24.6NaN 4.24.63.64.74.22.6444.24.14.64.44.34.74.44.84.6NaN 4.64.54.73.64.354.63.84.44.1544.44.74.63.54.254.353.64.64.644.14.44.34.84.14.54.14.63.94.84.854.73.64.43.74.24.14.24.34.23.84.34.44.14.74.44.14.3NaN 4.74.44.33.84.24.944.74.64.64.1444.84.34.33.54NaN 4.73.74.64.944.74.5NaN 3.74.14.344.34.44.54.72.944.24.44.94.33.94.34.44.54.24.64.24.44.44.34.94.24.83.73.34.2NaN 4.34.34.43.54.64.64.24.34.74.42.84.64.84.43.74.54.44.543.84.2NaN 4.74.94.54.44.63.553.83.7NaN 4.6NaN 4.63.544.654.34.84.64.64.64.74.44.23.84.44.34.9NaN 44.84.14.54.94.154.34.24.14.44.94.94.84.63.94.24.13.544.643.83.64.74.73.83.64.544.54.34.24.14.23.14.24.9544.74.94.54.64.94.14.544.1NaN 4.54.44.14.34.74.84.23.74.64.24.144.44.24.63.93.54.34.74.74.84.74.73.84.854.94.14.943.54.34.24.54.64.74.84.64.84.44.64.34.554.744.14.64.64.3NaN 4.13.94.643.94.34.24.74.23.643.84.14.64.84.34.63.54.34.12.84.2NaN 4.74.44.14.34.74.64.33.84.34.84.654.644.63.94.24.6444.14.74.84.3NaN 4.84.24.84.24.23.24.84.44.554.24.34.54.54.24.24.24.24.74.64.64.44.444.24.24.14.34.64.14.74.74.24.63.84.1NaN 4.14.93.74.33.84.24.53.64.14.14.34.44.7544.24.24.34.24.54.64.64.53.6554.74.64.44.84.24.84.24.14.34.33.72.74.84.34.14.64.24.34.34.84.74.24.14.84.74.14.34.144.44.24.44.44.94.34.54.84.43.64.54.52.74.64.74.54.454.84.44.74.244.54.33.6NaN 4.24.443.74.44.14.34.23.84.14.23.82.814.74NaN 4.94.444.1NaN 4.154.64.94.34.24.13.54.6NaN 4.74.84.152.64.34.44.34.84.64.14.44.44.34.24.64.54.64.74.454.64.64.444.34.54.84.74.94.83.83.543.644.64.83.64.14.44.1NaN 4.54.84.7NaN 3.844.34.14.14.54.54.54.93.84.54.14.144.34.44.44.84.44.64.14.13.64.64.84.44.34.64.24.54.44.63.54.94.54.34.34.44.7553.74.24.154.2544.74.354.64.64.64.14.34.44.63.64.34.73.64.64.64.844.94.64.544.754.14.14.14.64.944.14.14.84.4NaN 3.554.74.84.84.64.44.33.24.23.74.85NaN 4.44.654.14.33.84.14.64.74.24.74.24.94.84.74.44.24.24.63.743.74.73.64.74.44.54.34.44.9NaN 4.43.94.444.14.84.24.84.14.64.24.64.44.84.74.24.1NaN 4.84.24.64.44.14.34.82.54.34.1NaN 4.6NaN 4.64.83.944.94.244.34.74.6NaN 4.34.24.34.343.54.74.84.854.83.94.34.44.14.74.44.53.34.24.34.64.54.64.23.643.54.84.34.14.24.244.34.74.24.64.44.74.14.94.94.64.13.83.54.94.34.24.44.34.64.54.8NaN 4.63.94.44.34.43.754.3444.34.24.54.84.94.54.33.84.63.74.654.514.64.34.84.74NaN 4.74.944.24.23.84.64.24.6NaN 3.54.13.54.44.54.34.74.23.74.14.74.94.74.3544.73.754.244.74.54.24.54.44.14.14.73.74.74.84.24.854.94.83.74.84.74.54.24.64554.34NaN 54.84.53.94.63.84.94.64.74.34.74.14.24.14.14.74.34.34.73.654.64.52.94.44.54.6544.24.22.64.54.14.74.94.64.74.84.74.744.64.24.8NaN 4.33.74.844.94.1544.14.743.94.84.644.64.42.84.84.33.73.84.34.84.74.54.14.34.254.63.94.853.54.94.64.24.644.954.74.14.34.54.24.454.94.24.62.54.14.74.54.24.24.44.54.14.44.14.84.24.14.33.644.94.74.24.14.644.14.64.64.454.14.944.944.63.74.14.14.54.24.44.93.54.34.94.73.1NaN 4.14.14.654.34.44.24.34544.54.44.64.954.74.444.74.24.84.23.54.73.64.44.34.44.24.94.64.14.63.14.44.64.54.654.24.93.84.84.34NaN 4.64.6454.34.844.244.14.64.34.94.844.74.14.2NaN 4.94.34.14.13.84.74.84.44.74.23.74.64.23.64.14.744.34.44.144.54.6NaN 4.13.54.14.24.83.84.144.24.94.64.83.74.754.14.94.14.34.14.24.14.74.34.24.23.94.74.74.44.73.54.54.24.3NaN NaN 4.34.4NaN 4.24.14.844.54.94.92.74.33.74.44.74.34.44.14.84.64.54.24.74.74.24.654.44.43.54.14.14.34.94.54.93.64.43.73.843.94.64.44.84.24.14.14.43.64.54.54.34.14.64.14.74.64.34.14.34.73.54.34.74.7444.63.54.24.24.84.82.84.54.7NaN NaN 4.2544.34.24.22.84.44.1NaN 43.44.254.24.34.64.94.13.64.94.92.92.64.13.5NaN 4.553.753.64.14.644.644.12.54NaN 4.9NaN 44.64.14.34.44.854.54.34.73.73.64.34.44.64.14.13.54.74.84.5NaN 3.53.74.3NaN 4.6544.84.64.64.53.94.14.74.24.33.64.74.84.14.9NaN 4.54.84.74.644.54.64.84.24.84.74.744.2NaN 4.554.943.94.94.94.24.84.84.74.14.34.64.14.63.54.94.74.654.24.454.64.64.64.64.244.54.83.44.44.24.64.444.23.754.64.144.9NaN 4.44.144.14.44.14.84.64.34.24.74.44.34.54.34.34.64.74.44.84.44.64.84.64.94.34.84.34.44.14.94.74.54.14.64.93.84.64.34.74.64.34NaN 44.34.34.54.34.83.64.74.354.84.64.44.73.54.24.34.2NaN NaN 4.34.84.94.94.354.4NaN 4.34.253.54.64.44.24.14.13.84.24.54.22.93.73.73.64.14.24.7NaN 4.7444.24.34.254.54.3454.43.6NaN 4.44.14.24.14.54.6NaN 2.64.64.744.24.24.34.33.63.54.24.74.84.33.74.844.84.24.7NaN 4.74.84.94.64.73.5NaN 4.343.74.64.8NaN 4.24.54.64.34.84.74.14.9NaN 4.44.74.33.84.844.74.94.54.44.24.84.74.44.54.14.44.64.34.43.94.34.64.12.64.64.64.12.74.74444.24.54.14.74.14.14.14.24.553.54.454.14.3NaN 4.24.24.52.54.54.14.64.6NaN 4.73.7NaN 4.54.64.94.14.44.95NaN 4.44.144.64.64.7454.24.43.54.754.74.5NaN 4.74.74.84.6NaN 4.64.3NaN 4.34.94.14.4NaN 4.6NaN 4.24.34.13.54.243.94.63.43.54.944.14.254.43.9NaN 4.63.43.94.44.83.54.944.74.544.74.43.614.54.54.13.94.44.24.24.84.64.344.34.54.84.74.94.22.94.64.93.64.64.14.63.84.84.14.84.63.94.14.14.754.94.64.84.93.94.74.84.23.84.74.654.94.93.84.74.24.84.44.62.74.94.44.94.34.43.93.844.24.74.14.544.64.1NaN 4.24.94.83.544.14.354.74.94.1444.2NaN 3.74.74.34.24.14.14.54.2NaN 4.34.63.84.34.84.24.344.54.84.24.44.84.83.94.54.34.6NaN 3.64.944.23.8554.3NaN 4.94.354.44.54.1NaN 4.54.94.34.34.53.84.34.24.44.24.14.93.54.94.13.94.844.14.94.44.83.64.54.944.444.13.24.24.64.13.74.844.44.64.34.64.64.94.24.244.44.54.14.74.63.64.94.24.54.1NaN 4.64.74.144NaN 4.23.84.64.64.74.43.64.14.24.34.14.74.644.744.144.44.34.44.64.14.244.2NaN 4.65NaN NaN NaN 4.33.64.753.74.44.74.43.53.83.854.54.44.14.14.844.14.344.14.43.644.74.64.53.73.14.84.64.14.44.24.34.94.24.1NaN 4.14.84.14.83.24.84.24.94.254.74.74.14.64.94.44.84.34.84.64.24.84.44.94.44.14.8444.84.94.44.24.63.54.14.44.84.34.64.64.44.74.94.44.54.23.74.73.54.54.54.53.94.94.44.33.54.243.94.42.64.443.73.93.64.34.64.34.344.844.84.24.14.44.63.64.35443.84.644.53.14.24.64.44.94.84.64.14.84.64.13.74.94.94.14.2NaN 4.63.73.84.83.944.14.84.24.54.23.74.64.63.14.24.84.64.54.64.74.24.93.84.44.84.23.94.14.64.23.94.34.14.844.14.34.44.14.24.254.64.644.4NaN 4.34.94.84.64.34.14.24.14.64.84.34.24.74.34.34.94.33.94.854.34.44.74.74.64.74.64.94.64.14.84.84.3NaN 3.64.44.64.94.74.84.14.64.94.7NaN 3.44.74.24.95NaN 4.34.14.83.54.74.344.34.54.94.74.644.74.1NaN 4.54.74.44.14.74.64.9NaN 4.14.14.34.84.54.24.343.94.34.64.24.3NaN 4.554.744.64.34.344.34.63.54.42.94.3NaN 4.14.24.83.34.54.74.2NaN 44.24.54.24.44.654.84.74.24.23.73.74.63.74.34.74.1NaN 4.84.64.64.44.743.94.6NaN 4.74.64.54.44.54.24.74.244.34.54.24.24.54.854.34.63.84.44NaN 44.814.64.54.14.74.84.84.74.74.14.74.64.24.34.14.3543.74.5554.14.64.1NaN 53.84.14.74.143.64.94.3NaN 4.44.44.6NaN 4.54.8NaN 4.23.44.14.22.84.34.34.254.7NaN 4.44.64.44.73.83.54.34.854.14.24.84.64.44.94.454.94.13.64.344.44.54.944.34.64.54.84.144.64.64.64.64.14.754.34.64.13.64.14.34.644.24.63.74.74.344.84.33.64.84.14.14.14.34.34.14.24.34.54.44.94.64.54.14.93.54.744.944.944.144.84.73.74.54.14.44.5NaN 4.654.84.84.744.244.73.9NaN 4.74.54.24.64.1NaN 54.44.144.44.74.14.24.144.94.64.14.94.74.94.54.14.43.74.74.53.744.94.6NaN 4.94.64.14.64.94.64.9NaN 44.44.44.64.44.44.94.84.94.443.54.63.74.244.84.22.94.84.83.94.63.744.654.34.63.83.73.54.34.6NaN 4.64.84.34.3543.93.94.7NaN 54.74.64.54.64.94.74.23.84.44.74.74.844.44.85NaN 3.84.14.44.3NaN 434.74.64.74.244.64.14.24.34.63.94.74.644.33.74.44.94.84.23.754.64.23.9553.44.94NaN 4.14.24.94.84.13.84.64.14.34.83.94.54.54.13.84.14.34.84.24.13.54.34.44.44.84.4NaN NaN 4.64.13.844.94.93.74.94.94.64.24.24.64.44.243.64.24.34.84.64.94.44.54.54.84.14.64.6NaN 4.74.24.34.94.44.94.64.14.344NaN 4.34.34.64.24.444.24.34.64.34.94.64.34.64.64.24.64.9NaN NaN 4.454.94.54.14.94.64.34.14.14.24.34.94.544.354.34.54.24.94.34.34.84.64.644.94.44.844.74.64.64.44.34.3NaN 3.84.44.44.14.844.944.63.65453.34.64.34.8444.44.34.24.84.94.14NaN 4.74.14.74.24.44.34.24.54.74.454.64.14.24.94.13.74.34.94.54.44.744.64.63.444.43.54.24.24.84.954.24.24.24.14.74.24.34.64.34.94.24.14.14.74.64.73.94.34.54.44.144.34.74.843.84.44.64.24.83.94.244.24.244.24.44.94.94.64.34.94.34.24.74.64.24.24.84.24.14.654.6543.54.144.644.54.54.74.84.64.34.94.84.24.24.44.44.24.84.944.144.84.24.74.34.14.14.14.43.84.24.54.5NaN 4.644.74.14.74.8NaN 4.44.343.64.64.44.24.24.24.94.454.843.64.34.84.74.94NaN 4.344.44.44.6NaN NaN 44.53.54.74.54.44.64.3444.24.244.24.14.33.944.44.74.74.64.64.24.14.64.34.44.7NaN 3.44.74.64.14.23.74.64.73.7NaN 4.34.83.74.34.44.93.44.53.8NaN 4.34.754.14.33.83.74.44.14.24.34.14.8NaN 4.84.244.44.44.3NaN 3.244.34.643.4NaN 3.64.34.34.844.14.34.74.54.54.1NaN 4.34.44.24.44.154.14.65NaN 4.74.63.84.24.94.14.34.24.644.83.84.44.4NaN 4.74.53.7NaN 4.34.84.84.7NaN 4.54.34.84.14.64.94.44.63.64.84.34.34.44.354.24.33.54.9NaN NaN 4.343.64.12.94.74.64.23.64.93.74.74.84.24.24.24.64.754.254.34.24.64.74.24.54.44.14.44.24.14.13.84.54.244.1NaN 4.94.94.24.944.64.64.2NaN 4.54.94.64.14.44.94.24.64.74.44.34.64.44.54.64.44.54.354.14.34.44.244.84.64.34.74.24.44.34.63.94.24.654.13.54.44.43.644.24.14.154.54.44.24.14.34.54.74.84.74.54.84.34.44.94.14.414.64.34.54.34.24.62.74.63.7NaN 4.44.94.64.44.24.74.54.92.64.94.14.74.34.94.14.144.643.7NaN 4.23.54.54.344.14.64.14.944.84.44.13.63.74.84.24.64.94.54.34.24.24.62.74.54.54.2NaN 4.6NaN 4.34.83.54.65NaN 4.94.63.644.4NaN 4.74.344.64.34.14.53.94.44.64.63.34.6NaN 3.54.544.94.33.94.24.64.14.74.74.9443.944.14.24.94.44.64.3NaN 4.244.143.94.34.24.84514.23.64.24.644.24.84.74.34.74.14.64.754.24.2NaN 4.34.84.253.654.13.54.23.54.23.64.754.6NaN 4.24.3NaN NaN 4.64.7444.64.454.34.54.44.84.24.2NaN 4.74.64.13.84.44.93.544.44.34.944.34.14.543.43.64.554.64.24.64.14NaN 3.74.64.74.653.94.84.24.14.14.14.24.84.544.14.64.94.64.94.93.94.84.64.24.74.64.24.14.54.43.54.84.74.44.64.14.44.33.82.94.44.24.74.74.64.1NaN 4.44.74.34.2NaN 4.34.13.9NaN 2.744.53.43.8NaN 4.24.24.64.24.94.24.84.354.84.43.74.14.64.64.24.24.64.24.74.14.14.94.34.94.454.64.24.64.8NaN 4.94.9NaN 4.64.93.94.34.14.34.34.154.244.64.64.24.24.24.6' to numeric The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\32773\Desktop\外卖消费行为处理好的数据1\外卖消费行为处理好的数据\data mining.py", line 281, in <module> cluster_profile = data.groupby('Cluster')[cluster_features].mean() File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\groupby\groupby.py", line 2459, in mean result = self._cython_agg_general( "mean", alt=lambda x: Series(x, copy=False).mean(numeric_only=numeric_only), numeric_only=numeric_only, ) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\groupby\groupby.py", line 2005, in _cython_agg_general new_mgr = data.grouped_reduce(array_func) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\internals\managers.py", line 1488, in grouped_reduce applied = sb.apply(func) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\internals\blocks.py", line 395, in apply result = func(self.values, **kwargs) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\groupby\groupby.py", line 2002, in array_func result = self._agg_py_fallback(how, values, ndim=data.ndim, alt=alt) File "C:\Users\32773\.conda\envs\mining\Lib\site-packages\pandas\core\groupby\groupby.py", line 1948, in _agg_py_fallback raise type(err)(msg) from err TypeError: agg function failed [how->mean,dtype->object] 进程已结束,退出代码为 1 继续纠错
最新发布
11-25
import pandas as pd import numpy as np import json import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import Dataset, DataLoader import re import warnings warnings.filterwarnings('ignore') class FinancialHypergraphDataset(Dataset): """金融超图数据集(支持混合类型的股票代码)""" def __init__( self, node_feature_path: str, hyper_edge_path: str, event_path: str, node_vector_path: str ): """ 初始化数据集: - 自动处理混合类型的股票代码(数值型和字符串型) - 构建统一的节点标识系统 - 预处理所有数据源 """ print("正在加载数据...") # ---------------------- 1. 加载数据文件 ---------------------- self.node_features = pd.read_csv(node_feature_path) self.hyper_edges = pd.read_csv(hyper_edge_path) self.events = pd.read_csv(event_path) self.events['nodes'] = self.events['nodes'].apply(json.loads) self.node_vectors = pd.read_csv(node_vector_path) # ---------------------- 2. 修复股票代码转换问题 ---------------------- # 改进的股票代码转换函数:智能处理数字和字母混合代码 def format_stock_code(code): """将各种格式的股票代码转换为统一的6位字符串格式""" if pd.isna(code): return None # 处理数值型代码 if isinstance(code, (int, float)): return f"{int(code):06d}" # 处理字符串型代码 code_str = str(code).strip() # 移除字母前缀(如果有) if code_str[0].isalpha(): prefix = code_str[0] num_part = code_str[1:] else: prefix = '' num_part = code_str # 补齐数字部分到6位 num_part = num_part.zfill(6) return prefix + num_part print("正在转换股票代码格式...") self.node_features['股票代码_str'] = self.node_features['股票代码'].apply(format_stock_code) self.hyper_edges['节点'] = self.hyper_edges['节点'].apply(format_stock_code) # ---------------------- 3. 创建统一的ID映射系统 ---------------------- print("创建映射关系...") # 创建股票代码到节点ID的映射 self.code_to_id = {} for _, row in self.node_features.iterrows(): if pd.isna(row['股票代码_str']) or pd.isna(row['节点ID']): continue self.code_to_id[row['股票代码_str']] = row['节点ID'] # 创建公司名称到节点ID的映射 self.name_to_id = {} for idx, vector_row in self.node_vectors.iterrows(): company_name = vector_row['node_id'] # 查找匹配的节点ID matched_id = None for _, node_row in self.node_features.iterrows(): if pd.isna(node_row['节点ID']): continue if company_name == node_row.get('公司名称', None): matched_id = node_row['节点ID'] break if matched_id is not None: self.name_to_id[company_name] = matched_id # 构建节点ID到索引的映射 self.node_ids = sorted(self.node_features['节点ID'].dropna().unique()) self.node_to_idx = {node_id: idx for idx, node_id in enumerate(self.node_ids)} self.num_nodes = len(self.node_ids) # 按时间索引排序 self.time_indices = sorted(self.node_features['时间索引'].dropna().unique()) self.window_size = 20 # 可调整 print(f"数据加载完成:") print(f" - 节点数量: {self.num_nodes}") print(f" - 时间窗口: {len(self.time_indices)}") print(f" - 股票代码映射: {len(self.code_to_id)} 个") print(f" - 公司名称映射: {len(self.name_to_id)} 个") def __len__(self): return len(self.time_indices) - self.window_size + 1 def __getitem__(self, idx: int) -> dict: window_start = self.time_indices[idx] window_end = self.time_indices[idx + self.window_size - 1] # 获取窗口内节点特征(仅16维向量) window_mask = (self.node_features['时间索引'] >= window_start) & \ (self.node_features['时间索引'] <= window_end) # 提取16维向量特征 vector_cols = [f'dim_{i}' for i in range(16)] available_cols = [col for col in vector_cols if col in self.node_features.columns] if not available_cols: # 如果没有向量特征,用零填充 window_node_feats = np.zeros((sum(window_mask), 16), dtype=np.float32) else: window_node_feats = self.node_features.loc[window_mask, available_cols].values.astype(np.float32) # 构建超图邻接矩阵 adj_matrix = np.zeros((self.num_nodes, self.num_nodes), dtype=np.float32) for _, row in self.hyper_edges.iterrows(): if pd.isna(row['节点']) or pd.isna(row['超边']): continue hyper_type = row['超边类型'] weight = 1.0 if hyper_type == '行业' else 0.5 # 处理节点列表 node_str = row['节点'] if isinstance(node_str, str): nodes = node_str.split(',') else: nodes = [node_str] node_ids = [] for code in nodes: if pd.isna(code): continue formatted_code = code.strip() if formatted_code in self.code_to_id: node_id = self.code_to_id[formatted_code] if node_id in self.node_to_idx: node_ids.append(node_id) # 构建邻接关系 for i in range(len(node_ids)): for j in range(i+1, len(node_ids)): u_idx = self.node_to_idx[node_ids[i]] v_idx = self.node_to_idx[node_ids[j]] adj_matrix[u_idx][v_idx] += weight adj_matrix[v_idx][u_idx] += weight # 事件特征编码 event_feats = np.zeros((len(self.events), self.num_nodes), dtype=np.float32) for event_idx, event in self.events.iterrows(): sentiment = event['sentiment'] for node_name in event['nodes']: node_name = node_name.strip() if node_name in self.name_to_id: node_id = self.name_to_id[node_name] if node_id in self.node_to_idx: node_idx = self.node_to_idx[node_id] event_feats[event_idx][node_idx] = sentiment * 0.8 # 目标变量(窗口内平均对数收益率) window_returns = self.node_features.loc[window_mask, '对数收益率'].values target = np.mean(window_returns) if len(window_returns) > 0 else 0.0 return { 'node_features': torch.FloatTensor(window_node_feats), 'hyper_adj': torch.FloatTensor(adj_matrix), 'event_features': torch.FloatTensor(event_feats), 'target': torch.FloatTensor([target]) } class HypergraphConvLayer(nn.Module): """超图卷积层""" def __init__(self, in_dim: int, out_dim: int, num_heads: int = 4): super().__init__() self.linear = nn.Linear(in_dim, out_dim) self.multi_head_attn = nn.MultiheadAttention(out_dim, num_heads, dropout=0.1) def forward(self, x: torch.Tensor, adj: torch.Tensor) -> torch.Tensor: x = self.linear(x) x = x + torch.eye(x.size(0)).to(x.device) * 0.1 # 保留自环信息 attn_mask = ~adj.bool() # 非相邻节点掩码 x, _ = self.multi_head_attn(x, x, x, attn_mask=attn_mask) return F.relu(x) class FinancialHypergraphModel(nn.Module): """金融超图预测模型""" def __init__(self, node_feat_dim: int = 16, hidden_dim: int = 64, num_nodes: int = 0): super().__init__() # 超图卷积模块 self.hyper_conv1 = HypergraphConvLayer(node_feat_dim, hidden_dim) self.hyper_conv2 = HypergraphConvLayer(hidden_dim, hidden_dim // 2) # 事件特征编码模块 self.event_encoder = nn.Sequential( nn.Linear(num_nodes, hidden_dim // 2), nn.ReLU(), nn.LayerNorm(hidden_dim // 2) ) # 特征融合与输出 self.fusion_fc = nn.Linear(hidden_dim + hidden_dim // 2, hidden_dim // 2) self.output_fc = nn.Linear(hidden_dim // 2, 1) # 预测对数收益率 def forward( self, node_feats: torch.Tensor, hyper_adj: torch.Tensor, event_feats: torch.Tensor ) -> torch.Tensor: # 超图特征提取 node_feats = node_feats.unsqueeze(0) # (1, num_nodes, 16) hyper_adj = hyper_adj.unsqueeze(0) # (1, num_nodes, num_nodes) hyper_feat = self.hyper_conv1(node_feats, hyper_adj) hyper_feat = self.hyper_conv2(hyper_feat, hyper_adj) hyper_feat = hyper_feat.mean(dim=1) # 全局池化 → (1, hidden_dim//2) # 事件特征编码 event_feat = event_feats.mean(dim=0) # 平均每个节点的事件影响 → (num_nodes,) event_feat = event_feat.unsqueeze(0) # (1, num_nodes) event_feat = self.event_encoder(event_feat) # (1, hidden_dim//2) # 特征融合与输出 fused_feat = torch.cat([hyper_feat, event_feat], dim=1) fused_feat = self.fusion_fc(fused_feat) return self.output_fc(fused_feat).squeeze(1) def train_model(dataset: FinancialHypergraphDataset, epochs: int = 50, lr: float = 0.001): """训练函数""" dataloader = DataLoader(dataset, batch_size=1, shuffle=True) device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') model = FinancialHypergraphModel( node_feat_dim=16, hidden_dim=64, num_nodes=dataset.num_nodes ).to(device) criterion = nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=lr, weight_decay=1e-5) scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.5) print(f"开始训练,设备: {device}") for epoch in range(epochs): model.train() total_loss = 0.0 num_batches = 0 for batch in dataloader: node_feats = batch['node_features'].to(device) hyper_adj = batch['hyper_adj'].to(device) event_feats = batch['event_features'].to(device) targets = batch['target'].to(device) # 跳过异常批次 if torch.isnan(node_feats).any() or torch.isnan(hyper_adj).any() or torch.isnan(targets).any(): print(f"跳过包含NaN的批次") continue if node_feats.size(0) == 0: print(f"跳过空批次") continue outputs = model(node_feats, hyper_adj, event_feats) loss = criterion(outputs, targets) optimizer.zero_grad() loss.backward() torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0) optimizer.step() total_loss += loss.item() num_batches += 1 if num_batches == 0: continue avg_loss = total_loss / num_batches scheduler.step() if (epoch + 1) % 5 == 0: print(f"Epoch {epoch+1}/{epochs} | Loss: {avg_loss:.6f}") return model def main(): # ---------------------- 配置文件路径 ---------------------- data_config = { 'node_feature_path': r"D:\刘涵.(学习资料)\科研立项\A股周股票综合数据\RESSET_WRESSTK_1_(2).csv\node_features.csv", 'hyper_edge_path': r"D:\刘涵.(学习资料)\科研立项\A股周股票综合数据\RESSET_WRESSTK_1_(2).csv\hyper_edges.csv", 'event_path': r"C:\Users\刘涵\科研立项数据分析\output\事件id+事件类型+情感强度+关联节点列表(JSON 字符串).csv", 'node_vector_path': r"C:\Users\刘涵\科研立项数据分析\output\节点id+更新后的16维向量.csv" } try: # 初始化数据集 dataset = FinancialHypergraphDataset(**data_config) # 训练模型 model = train_model(dataset, epochs=50, lr=0.001) # 保存模型 torch.save({ 'model_state_dict': model.state_dict(), 'node_to_idx': dataset.node_to_idx, 'num_nodes': dataset.num_nodes, 'code_to_id': dataset.code_to_id, 'name_to_id': dataset.name_to_id }, 'financial_hypergraph_model.pth') print("模型训练完成并已保存!") except Exception as e: print(f"训练过程中出现错误: {str(e)}") import traceback traceback.print_exc() if __name__ == "__main__": main() 仅仅出现: 正在加载数据... 正在转换股票代码格式... 创建映射关系... 且一直在运行中,进行简单改进
10-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值