Skip to content

Instantly share code, notes, and snippets.

@Mashimo
Last active April 29, 2018 22:36
Show Gist options
  • Save Mashimo/d8bfb68c7582bc81b293d6ad7caec3ef to your computer and use it in GitHub Desktop.
Save Mashimo/d8bfb68c7582bc81b293d6ad7caec3ef to your computer and use it in GitHub Desktop.
wheat seeds data visualisation
Check the data-visualisation-README file below.

Python examples of data visualisation

  • Histograms
    Histograms are one of the The Seven Basic Tools of Quality, graphical techniques which have been identified as being most helpful for troubleshooting issues. Histograms help you understand the distribution of a feature in your dataset. They accomplish this by simultaneously answering the questions where in your feature's domain your records are located at, and how many records exist there. Coincidentally, these two questions are also answered by the .unique() and .value_counts() methods but in a graphical way. Knowing how a feature is distributed throughout your dataset is useful, as some machine learning models expect that, and only work when, the provided data is normally (Gaussian) distributed! For such models, if exploring your data with a histogram proves your data is skewed, all hope isn't lost. There are transformation techniques that will correct for this.

  • 2D scatter
    Similar to histograms, scatter plots are also one of the Seven Basic Tools of Quality. 2D scatter plots are used to visually inspect if a correlation exist between the charted features. Both axes of a 2D scatter plot represent a distinct, numeric feature. They don't have to be continuous, but they must at least be ordinal since each record in your dataset is being plotted as a point with its location along the axes corresponding to its feature values. Without ordering, the position of the plots would have no meaning. It is possible that either a negative or positive correlation exist between the charted features, or alternatively, none at all. The correlation type can be assessed through the overall diagonal trending of the plotted points. Positive and negative correlations may further display a linear or non-linear relationship. If a straight line can be drawn through your scatter plot and most of points seem to stick close to it, then it can be said with a certain level of confidence that there is a linear relationship between the plotted features. Similarly, if a curve can be drawn through the points, there is likely a non-linear relationship. If neither a curve nor line adequately seems to fit the overall shape of the plotted points, chances are there is neither a correlation nor relationship between the features, or at least not enough information at present to determine.

  • 3D scatter
    There is a way to visualise the relationship between three variables simultaneously. That way is through 3D scatter plots. Unfortunately, the Pyplot member of Pandas dataframes don't natively support the ability to generate 3D plots...

  • Parallel coordinates
    Scatter plots are effective in communicating data by mapping a feature to spatial dimensions, which we understand intuitively. However, we are limited in that we lose the ability to easily and passively comprehend an image past three spatial dimensions. It takes a great deal of thought and even more creativity to push the envelope any further. You can introduce a time dimension using animations, but it really doesn't get much better than that. Real world datasets often have tens of features, if not more. Sparse datasets can have tens of thousands of features. What are your visualization options if when you have a dataset with more than three dimensions? Parallel coordinate plots are similar to scatter plots in that each axis maps to the ordered, numeric domain of a feature. But instead of having axes aligned in an orthogonal manner, parallel coordinates get their name due to their their axes being arranged vertically and in parallel. All that is just a fancy way of saying parallel coordinates are a bunch of parallel, labeled, numeric axes. Each graphed observation is plotted as a polyline, a series of connected line segments. The joints of the polyline fall on each axis. Since each axis maps to the domain of a numeric feature, the resulting polyline fully describes the value of each of the observation's features. Parallel coordinates are a useful charting technique you'll want to add. They are a higher dimensionality visualization technique because they allow you to easily view observations with more than three dimensions simply by tacking on additional parallel coordinates. However at some point, it becomes hard to comprehend the chart anymore due to the sheer number of axes and also potentially due to the number of observations. If you data has more than 10 features, parallel coordinates might not do it for you. Parallel coordinates are useful because polylines belonging to similar records tend to cluster together. To graph them with Pandas and MatPlotLib, you have to specify a feature to group by (it can be non-numeric). Pandas' parallel coordinates interface is extremely easy to use, but use it with care. It only supports a single scale for all your axes.

  • Andrew's curves
    An Andrews plot, also known as Andrews curve, helps you visualize higher dimensionality, multivariate data by plotting each of your dataset's observations as a curve. The feature values of the observation act as the coefficients of the curve, so observations with similar characteristics tend to group closer to each other. Due to this, Andrews curves have some use in outlier detection. Just as with Parallel Coordinates, every plotted feature must be numeric since the curve equation is essentially the product of the observation's features vector (transposed) and the vector: (1/sqrt(2), sin(t), cos(t), sin(2t), cos(2t), sin(3t), cos(3t), ...) to create a Fourier series.

  • correlation matrix
    One last higher dimensionality, visualization-technique is MatPlotLib's .imshow() method. This command generates an image based off of the normalized values stored in a matrix, or rectangular array of float64s. Besides being a straightforward way to display .PNG and other images, the .imshow() method has quite a few other use cases. When you use the .corr() method on your dataset, Pandas calculates a correlation matrix for you that measures how close to being linear the relationship between any two features in your dataset are. Correlation values may range from -1 to 1, where 1 would mean the two features are perfectly positively correlated and have identical slopes for all values. -1 would mean they are perfectly negatively correlated, and have a negative slope for one another, again being linear. Values closer to 0 mean there is little to no linear relationship between the two variables at all (e.g., pizza sales and plant growth), and so the the further away from 0 the value is, the stronger the relationship between the features. The matrix is symmetric because the correlation between any two features X and Y is, of course, identical to that of features Y and X. It is invariant to scale, so even if one feature is measured in inches and the other is in centimeters, it makes no difference. .imshow() can help you any time you have a square matrix you want to visualize. Other matrices you might want to visualize include the covariance matrix, the confusion matrix.

import pandas as pd
import matplotlib.pyplot as plt
from pandas.tools.plotting import andrews_curves
# Look pretty...
plt.style.use('ggplot')
#
# Load up the Seeds Dataset into a Dataframe
#
df = pd.read_csv("wheat.data", index_col='id')
print(df.columns)
#
# get rid of the 'area' and 'perimeter' features
#
df2 = df.drop(['area','perimeter'], axis=1)
print(df.head())
#
# Plot a parallel coordinates chart grouped by
# the 'wheat_type' feature. Be sure to set the optional
# display parameter alpha to 0.4
#
plt.figure()
andrews_curves(df2, 'wheat_type', alpha=0.4)
plt.figure()
andrews_curves(df, 'wheat_type', alpha=0.4)
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
#
# Load up the Seeds Dataset into a Dataframe
#
df = pd.read_csv("wheat.data", index_col='id')
#
# Compute the correlation matrix of the dataframe
#
c = df.corr()
print(c)
#
# Graph the correlation matrix using imshow
#
plt.imshow(c, cmap=plt.cm.Blues, interpolation='nearest')
plt.colorbar()
tick_marks = [i for i in range(len(df.columns))]
plt.xticks(tick_marks, df.columns, rotation='vertical')
plt.yticks(tick_marks, df.columns)
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
# Look pretty...
plt.style.use('ggplot')
#
# Load up the Seeds Dataset into a Dataframe
#
df = pd.read_csv("wheat.data")
print(df.columns)
#
# Create a slice of the dataframe
# that only includes the 'area' and 'perimeter' features
#
s1 = df[['area','perimeter']]
print(s1.head())
#
# Create another slice of the dataframe
# that only includes the 'groove' and 'asymmetry' features
#
s2 = df[['groove','asymmetry']]
print(s2.head())
#
# Create a histogram plot using the first slice,
# and another histogram plot using the second slice.
#
s1.plot.hist(alpha=0.75)
s2.plot.hist(alpha=0.75)
# Display the graphs:
plt.show()
# which feature has more variance?
pd.DataFrame.var(s2.groove)
pd.DataFrame.var(s2.asymmetry)
import pandas as pd
import matplotlib.pyplot as plt
from pandas.tools.plotting import parallel_coordinates
# Look pretty...
plt.style.use('ggplot')
#
# Load up the Seeds Dataset into a Dataframe
#
df = pd.read_csv("wheat.data", index_col='id')
print(df.columns)
#
# get rid of the 'area' and 'perimeter' features
#
df.drop(['area','perimeter'], axis=1, inplace=True)
print(df.head())
#
# Plot a parallel coordinates chart grouped by
# the 'wheat_type' feature.
#
plt.figure()
parallel_coordinates(df, 'wheat_type', alpha=0.4)
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
# Look pretty...
plt.style.use('ggplot')
#
# Load up the Seeds Dataset into a Dataframe
#
df = pd.read_csv("wheat.data")
print(df.columns)
#
# Create a 2d scatter plot that graphs the
# area and perimeter features
#
df.plot.scatter(x='area', y='perimeter')
#
# Create a 2d scatter plot that graphs the
# groove and asymmetry features
#
df.plot.scatter(x='groove', y='asymmetry')
#
# Create a 2d scatter plot that graphs the
# compactness and width features
#
df.plot.scatter(x='compactness', y='width')
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
#from mpl_toolkits.mplot3d import Axes3D
# Look pretty...
plt.style.use('ggplot')
#
# Load up the Seeds Dataset into a Dataframe
#
df = pd.read_csv("wheat.data")
fig = plt.figure()
#
# Create a new 3D scatter plot using the area,
# perimeter and asymmetry features.
#
ax = fig.add_subplot(111, projection='3d')
ax.set_xlabel('Area')
ax.set_ylabel('Perimeter')
ax.set_zlabel('Asymmetry')
ax.scatter(df.area, df.perimeter, df.asymmetry, c='red')
fig = plt.figure()
#
# Create a new 3D scatter plot using the width,
# groove and length features.
#
ax = fig.add_subplot(111, projection='3d')
ax.set_xlabel('width')
ax.set_ylabel('groove')
ax.set_zlabel('length')
ax.scatter(df.width, df.groove, df.length, c='green')
plt.show()
id,area,perimeter,compactness,length,width,asymmetry,groove,wheat_type
0,15.26,14.84,0.871,5.763,3.312,2.221,5.22,kama
1,14.88,14.57,0.8811,5.554,3.333,1.018,4.956,kama
2,14.29,14.09,0.905,5.291,3.337,2.699,4.825,kama
3,13.84,13.94,0.8955,5.324,3.379,2.259,4.805,kama
4,16.14,14.99,0.9034,5.658,3.562,1.355,5.175,kama
5,14.38,14.21,0.8951,5.386,3.312,2.462,4.956,kama
6,14.69,14.49,0.8799,5.563,3.259,3.586,5.219,kama
7,14.11,14.1,0.8911,5.42,3.302,2.7,,canadian
8,16.63,15.46,0.8747,6.053,3.465,2.04,5.877,kama
9,16.44,15.25,0.888,5.884,3.505,1.969,5.533,kama
10,15.26,14.85,0.8696,5.714,3.242,4.543,5.314,kama
11,14.03,14.16,0.8796,5.438,3.201,1.717,5.001,kama
12,13.89,14.02,0.888,5.439,3.199,3.986,4.738,kama
13,13.78,14.06,0.8759,5.479,3.156,3.136,4.872,kama
14,13.74,14.05,0.8744,5.482,3.114,2.932,4.825,kama
15,14.59,14.28,0.8993,5.351,3.333,4.185,4.781,kama
16,13.99,13.83,0.9183,5.119,3.383,5.234,4.781,kama
17,15.69,14.75,0.9058,5.527,3.514,1.599,5.046,kama
18,14.7,14.21,0.9153,5.205,3.466,1.767,4.649,kama
19,12.72,13.57,0.8686,5.226,3.049,4.102,4.914,kama
20,14.16,14.4,0.8584,5.658,3.129,3.072,5.176,kama
21,14.11,14.26,0.8722,5.52,3.168,2.688,5.219,kama
22,15.88,14.9,0.8988,5.618,3.507,0.7651,5.091,kama
23,12.08,13.23,0.8664,5.099,2.936,1.415,4.961,kama
24,15.01,14.76,0.8657,5.789,3.245,1.791,5.001,kama
25,16.19,15.16,0.8849,5.833,3.421,0.903,5.307,kama
26,13.02,13.76,0.8641,5.395,3.026,3.373,4.825,kama
27,12.74,13.67,0.8564,5.395,2.956,2.504,4.869,kama
28,14.11,14.18,0.882,5.541,3.221,2.754,5.038,kama
29,13.45,14.02,0.8604,5.516,3.065,3.531,5.097,kama
30,13.16,13.82,0.8662,5.454,2.975,0.8551,5.056,kama
31,15.49,14.94,0.8724,5.757,3.371,3.412,5.228,kama
32,14.09,14.41,0.8529,5.717,3.186,3.92,5.299,kama
33,13.94,14.17,0.8728,5.585,3.15,2.124,5.012,kama
34,15.05,14.68,0.8779,5.712,3.328,2.129,5.36,kama
35,16.12,15.0,,0.9,,5.709,3.485,canadian
36,16.2,15.27,0.8734,5.826,3.464,2.823,5.527,kama
37,17.08,15.38,0.9079,5.832,3.683,2.956,5.484,kama
38,14.8,14.52,0.8823,5.656,3.288,3.112,5.309,kama
39,14.28,14.17,0.8944,5.397,3.298,6.685,5.001,kama
40,13.54,13.85,0.8871,5.348,3.156,2.587,5.178,kama
41,13.5,13.85,0.8852,5.351,3.158,2.249,5.176,kama
42,13.16,13.55,0.9009,5.138,3.201,2.461,4.783,kama
43,15.5,14.86,0.882,5.877,3.396,4.711,5.528,kama
44,15.11,14.54,0.8986,5.579,3.462,3.128,5.18,kama
45,13.8,14.04,0.8794,5.376,3.155,1.56,4.961,kama
46,15.36,14.76,0.8861,5.701,3.393,1.367,5.132,kama
47,14.99,14.56,0.8883,5.57,3.377,2.958,5.175,kama
48,14.79,14.52,0.8819,5.545,3.291,2.704,5.111,kama
49,14.86,14.67,0.8676,5.678,3.258,2.129,5.351,kama
50,14.43,14.4,0.8751,5.585,3.272,3.975,5.144,kama
51,15.78,14.91,0.8923,5.674,3.434,5.593,5.136,kama
52,14.49,14.61,0.8538,5.715,3.113,4.116,5.396,kama
53,14.33,14.28,0.8831,5.504,3.199,3.328,5.224,kama
54,14.52,14.6,0.8557,5.741,3.113,1.481,5.487,kama
55,15.03,14.77,0.8658,5.702,3.212,1.933,5.439,kama
56,14.46,14.35,0.8818,5.388,3.377,2.802,5.044,kama
57,14.92,14.43,0.9006,5.384,3.412,1.142,5.088,kama
58,15.38,14.77,0.8857,5.662,3.419,1.999,5.222,kama
59,12.11,13.47,0.8392,5.159,3.032,1.502,4.519,kama
60,11.42,12.86,0.8683,5.008,2.85,2.7,,canadian
61,11.23,12.63,0.884,4.902,2.879,2.269,4.703,kama
62,12.36,13.19,0.8923,5.076,3.042,3.22,4.605,kama
63,13.22,13.84,0.868,5.395,3.07,4.157,5.088,kama
64,12.78,13.57,0.8716,5.262,3.026,1.176,4.782,kama
65,12.88,13.5,0.8879,5.139,3.119,2.352,4.607,kama
66,14.34,14.37,0.8726,5.63,3.19,1.313,5.15,kama
67,14.01,14.29,0.8625,5.609,3.158,2.217,5.132,kama
68,14.37,14.39,0.8726,5.569,3.153,1.464,5.3,canadian
69,12.73,13.75,0.8458,5.412,2.882,3.533,5.067,kama
70,17.63,15.98,0.8673,6.191,3.561,4.076,6.06,rosa
71,16.84,15.67,0.8623,5.998,3.484,4.675,5.877,rosa
72,17.26,15.73,0.8763,5.978,3.594,4.539,5.791,rosa
73,19.11,16.26,0.9081,6.154,3.93,2.936,6.079,rosa
74,16.82,15.51,0.8786,6.017,3.486,4.004,5.841,rosa
75,16.77,15.62,0.8638,5.927,3.438,4.92,5.795,rosa
76,17.32,15.91,0.8599,6.064,3.403,3.824,5.922,rosa
77,20.71,17.23,0.8763,6.579,3.814,4.451,6.451,rosa
78,18.94,16.49,0.875,6.445,3.639,5.064,6.362,rosa
79,17.12,15.55,0.8892,5.85,3.566,2.858,5.746,rosa
80,16.53,15.34,0.8823,5.875,3.467,5.532,5.88,rosa
81,18.72,16.19,0.8977,6.006,3.857,5.324,5.879,rosa
82,20.2,16.89,0.8894,6.285,3.864,5.173,6.187,rosa
83,19.57,16.74,0.8779,6.384,3.772,1.472,6.273,rosa
84,19.51,16.71,0.878,6.366,3.801,2.962,6.185,rosa
85,18.27,16.09,0.887,6.173,3.651,2.443,6.197,rosa
86,18.88,16.26,0.8969,6.084,3.764,1.649,6.109,rosa
87,18.98,16.66,0.859,6.549,3.67,3.691,6.498,rosa
88,21.18,17.21,0.8989,6.573,4.033,5.78,6.231,rosa
89,20.88,17.05,0.9031,6.45,4.032,5.016,6.321,rosa
90,20.1,16.99,0.8746,6.581,3.785,1.955,6.449,rosa
91,18.76,16.2,0.8984,6.172,3.796,3.12,6.053,rosa
92,18.81,16.29,0.8906,6.272,3.693,3.237,6.053,rosa
93,18.59,16.05,0.9066,6.037,3.86,6.001,5.877,rosa
94,18.36,16.52,0.8452,6.666,3.485,4.933,6.448,rosa
95,16.87,15.65,0.8648,6.139,3.463,3.696,5.967,rosa
96,19.31,16.59,0.8815,6.341,3.81,3.477,6.238,rosa
97,18.98,16.57,0.8687,6.449,3.552,2.144,6.453,rosa
98,18.17,16.26,0.8637,6.271,3.512,2.853,6.273,rosa
99,18.72,16.34,0.881,6.219,3.684,2.188,6.097,rosa
100,16.41,15.25,0.8866,5.718,3.525,4.217,5.618,rosa
101,17.99,15.86,0.8992,5.89,3.694,2.068,5.837,rosa
102,19.46,16.5,0.8985,6.113,3.892,4.308,6.009,rosa
103,19.18,16.63,0.8717,6.369,3.681,3.357,6.229,rosa
104,18.95,16.42,0.8829,6.248,3.755,3.368,6.148,rosa
105,18.83,16.29,0.8917,6.037,3.786,2.553,5.879,rosa
106,18.85,16.17,0.9056,6.152,3.806,2.843,6.2,canadian
107,17.63,15.86,0.88,6.033,3.573,3.747,5.929,rosa
108,19.94,16.92,0.8752,6.675,3.763,3.252,6.55,rosa
109,18.55,16.22,0.8865,6.153,3.674,1.738,5.894,rosa
110,18.45,16.12,0.8921,6.107,3.769,2.235,5.794,rosa
111,19.38,16.72,0.8716,6.303,3.791,3.678,5.965,rosa
112,19.13,16.31,0.9035,6.183,3.902,2.109,5.924,rosa
113,19.14,16.61,0.8722,6.259,3.737,6.682,6.053,rosa
114,20.97,17.25,0.8859,6.563,3.991,4.677,6.316,rosa
115,19.06,16.45,0.8854,6.416,3.719,2.248,6.163,rosa
116,18.96,16.2,0.9077,6.051,3.897,4.334,5.75,rosa
117,19.15,16.45,0.889,6.245,3.815,3.084,6.185,rosa
118,18.89,16.23,0.9008,6.227,3.769,3.639,5.966,rosa
119,20.03,16.9,0.8811,6.493,3.857,3.063,6.32,rosa
120,20.24,16.91,0.8897,6.315,3.962,5.901,6.188,rosa
121,18.14,16.12,0.8772,6.059,3.563,3.619,6.011,rosa
122,16.17,15.38,0.8588,5.762,3.387,4.286,5.703,rosa
123,18.43,15.97,0.9077,5.98,3.771,2.984,5.905,rosa
124,15.99,14.89,0.9064,5.363,3.582,3.336,5.144,rosa
125,18.75,16.18,0.8999,6.111,3.869,4.188,5.992,rosa
126,18.65,16.41,0.8698,6.285,3.594,4.391,6.102,rosa
127,17.98,15.85,0.8993,5.979,3.687,2.257,5.919,rosa
128,20.16,17.03,0.8735,6.513,3.773,1.91,6.185,rosa
129,17.55,15.66,0.8991,5.791,3.69,5.366,5.661,rosa
130,18.3,15.89,0.9108,5.979,3.755,2.837,5.962,rosa
131,18.94,16.32,0.8942,6.144,3.825,2.908,5.949,rosa
132,15.38,14.9,0.8706,5.884,3.268,4.462,5.795,rosa
133,16.16,15.33,0.8644,5.845,3.395,4.266,5.795,rosa
134,15.56,14.89,0.8823,5.776,3.408,4.972,5.847,rosa
135,15.38,14.66,0.899,5.477,3.465,3.6,,canadian
136,17.36,15.76,0.8785,6.145,3.574,3.526,5.971,rosa
137,15.57,15.15,0.8527,5.92,3.231,2.64,5.879,rosa
138,15.6,15.11,0.858,5.832,3.286,2.725,5.752,rosa
139,16.23,15.18,0.885,5.872,3.472,3.769,5.922,rosa
140,13.07,13.92,0.848,5.472,2.994,5.304,5.395,canadian
141,13.32,13.94,0.8613,5.541,3.073,7.035,5.44,canadian
142,13.34,13.95,0.862,5.389,3.074,5.995,5.307,canadian
143,12.22,13.32,0.8652,5.224,2.967,5.469,5.221,canadian
144,11.82,13.4,0.8274,5.314,2.777,4.471,5.178,canadian
145,11.21,13.13,0.8167,5.279,2.687,6.169,5.275,canadian
146,11.43,13.13,0.8335,5.176,2.719,2.221,5.132,canadian
147,12.49,13.46,0.8658,5.267,2.967,4.421,5.002,canadian
148,12.7,13.71,0.8491,5.386,2.911,3.26,5.316,canadian
149,10.79,12.93,0.8107,5.317,2.648,5.462,5.194,canadian
150,11.83,13.23,0.8496,5.263,2.84,5.195,5.307,canadian
151,12.01,13.52,0.8249,5.405,2.776,6.992,5.27,canadian
152,12.26,13.6,0.8333,5.408,2.833,4.756,5.36,canadian
153,11.18,13.04,0.8266,5.22,2.693,3.332,5.001,canadian
154,11.36,13.05,0.8382,5.175,2.755,4.048,5.263,canadian
155,11.19,13.05,0.8253,5.25,2.675,5.813,5.219,canadian
156,11.34,12.87,0.8596,5.053,2.849,3.347,5.003,canadian
157,12.13,13.73,0.8081,5.394,2.745,4.825,5.22,canadian
158,11.75,13.52,0.8082,5.444,2.678,4.378,5.31,canadian
159,11.49,13.22,0.8263,5.304,2.695,5.388,5.31,canadian
160,12.54,13.67,0.8425,5.451,2.879,3.082,5.491,canadian
161,12.02,13.33,0.8503,5.35,2.81,4.271,5.308,canadian
162,12.05,13.41,0.8416,5.267,2.847,4.988,5.046,canadian
163,12.55,13.57,0.8558,5.333,2.968,4.419,5.176,canadian
164,11.14,12.79,0.8558,5.011,2.794,6.388,5.049,canadian
165,12.1,13.15,0.8793,5.105,2.941,2.201,5.056,canadian
166,12.44,13.59,0.8462,5.319,2.897,4.924,5.27,canadian
167,12.15,13.45,0.8443,5.417,2.837,3.638,5.338,canadian
168,11.35,13.12,0.8291,5.176,2.668,4.337,5.132,canadian
169,11.24,13.0,,0.8359,5.09,2.715,3.521,canadian
170,11.02,13.0,,0.8189,5.325,2.701,6.735,canadian
171,11.55,13.1,0.8455,5.167,2.845,6.715,4.956,canadian
172,11.27,12.97,0.8419,5.088,2.763,4.309,5.0,canadian
173,11.4,13.08,0.8375,5.136,2.763,5.588,5.089,canadian
174,10.83,12.96,0.8099,5.278,2.641,5.182,5.185,canadian
175,10.8,12.57,0.859,4.981,2.821,4.773,5.063,canadian
176,11.26,13.01,0.8355,5.186,2.71,5.335,5.092,canadian
177,10.74,12.73,0.8329,5.145,2.642,4.702,4.963,canadian
178,11.48,13.05,0.8473,5.18,2.758,5.876,5.002,canadian
179,12.21,13.47,0.8453,5.357,2.893,1.661,5.178,canadian
180,11.41,12.95,0.856,5.09,2.775,4.957,4.825,canadian
181,12.46,13.41,0.8706,5.236,3.017,4.987,5.147,canadian
182,12.19,13.36,0.8579,5.24,2.909,4.857,5.158,canadian
183,11.65,13.07,0.8575,5.108,2.85,5.209,5.135,canadian
184,12.89,13.77,0.8541,5.495,3.026,6.185,5.316,canadian
185,11.56,13.31,0.8198,5.363,2.683,4.062,5.182,canadian
186,11.81,13.45,0.8198,5.413,2.716,4.898,5.352,canadian
187,10.91,12.8,0.8372,5.088,2.675,4.179,4.956,canadian
188,11.23,12.82,0.8594,5.089,2.821,7.524,4.957,canadian
189,10.59,12.41,0.8648,4.899,2.787,4.975,4.794,canadian
190,10.93,12.8,0.839,5.046,2.717,5.398,5.045,canadian
191,11.27,12.86,0.8563,5.091,2.804,3.985,5.001,canadian
192,11.87,13.02,0.8795,5.132,2.953,3.597,5.132,canadian
193,10.82,12.83,0.8256,5.18,2.63,4.853,5.089,canadian
194,12.11,13.27,0.8639,5.236,2.975,4.132,5.012,canadian
195,12.8,13.47,0.886,5.16,3.126,4.873,4.914,canadian
196,12.79,13.53,0.8786,5.224,3.054,5.483,4.958,canadian
197,13.37,13.78,0.8849,5.32,3.128,4.67,5.091,canadian
198,12.62,13.67,0.8481,5.41,2.911,3.306,5.231,canadian
199,12.76,13.38,0.8964,5.073,3.155,2.828,4.83,canadian
200,12.38,13.44,0.8609,5.219,2.989,5.472,5.045,canadian
201,12.67,13.32,0.8977,4.984,3.135,2.3,,canadian
202,11.18,12.72,0.868,5.009,2.81,4.051,4.828,canadian
203,12.7,13.41,0.8874,5.183,3.091,8.456,5.0,canadian
204,12.37,13.47,0.8567,5.204,2.96,3.919,5.001,canadian
205,12.19,13.2,0.8783,5.137,2.981,3.631,4.87,canadian
206,11.23,12.88,0.8511,5.14,2.795,4.325,5.003,canadian
207,13.2,13.66,0.8883,5.236,3.232,8.315,5.056,canadian
208,11.84,13.21,0.8521,5.175,2.836,3.598,5.044,canadian
209,12.3,13.34,0.8684,5.243,2.974,5.637,5.063,canadian
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment