Wolfram Language

Un accès plus riche à la base de connaissances

Les chiffres du marathon de Chicago 2015

Le marathon de Chicago 2015 a attiré 45 000 coureurs à Chicago le 11 octobre 2015. Plus de 37 000 d'entre eux ont terminé la course, et les détails des performances de chaque coureur ont été soigneusement enregistrés. Explorez et visualisez les caractéristiques des coureurs et leurs performances à l'aide d'un magasin d'entités personnalisé contenant ces données.

Chargez un magasin d'entités du marathon à partir d'un ResourceObject.

In[1]:=
Click for copyable input
marathonEntityStore = ResourceData[ ResourceObject[ Association[ "Name" -> "2015 Chicago Marathon Data", "UUID" -> "7dc77972-cfc3-48dc-8d08-0292c6d2a929", "ResourceType" -> "DataResource", "Version" -> "1.0.0", "Description" -> "2015 Chicago Marathon participant data", "ContentSize" -> Quantity[1990.2215919999999`, "Megabytes"], "ContentElements" -> {"Content"}]]]
Out[1]=

Enregistrez le magasin pour cette session.

In[2]:=
Click for copyable input
PrependTo[$EntityStores, marathonEntityStore];

Extrayez le nombre total de coureurs et, à l'aide d'une classe d'entités définie implicitement, le nombre de participants masculins et féminins.

In[3]:=
Click for copyable input
EntityValue["ChicagoMarathon2015", "EntityCount"]
Out[3]=
In[4]:=
Click for copyable input
Table[EntityValue[ EntityClass["ChicagoMarathon2015", "Gender" -> gender], "EntityCount"], {gender, {Entity["Gender", "Male"], Entity["Gender", "Female"]}}]
Out[4]=

Sélectionnez cinq coureurs au hasard.

In[5]:=
Click for copyable input
RandomEntity["ChicagoMarathon2015", 5]
Out[5]=

Affichez les propriétés stockées pour un coureur particulier.

In[6]:=
Click for copyable input
Entity["ChicagoMarathon2015", "Runner145"]["PropertyAssociation"]
Out[6]=

Extrayez les totaux des nationalités des coureurs et créez un tableau des nationalités les plus courantes.

In[7]:=
Click for copyable input
nationalityTallies = Reverse[SortBy[ Tally[EntityValue["ChicagoMarathon2015", EntityProperty["ChicagoMarathon2015", "Country"]]], Last]];
Afficher l'entrée complète en Wolfram Language
In[8]:=
Click for copyable input
TextGrid[Join @@@ Transpose[ Partition[Take[Reverse[Sort[Reverse /@ nationalityTallies]], 80], 20]], Alignment -> {{{Decimal, Left}}, Automatic}, Dividers -> {{{Thick, True}}, {{True}}}, Frame -> Thick, Background -> {Automatic, {{LightBlue, None}}}] // TraditionalForm
Out[8]//TraditionalForm=

Visualisez les trajectoires géodésiques de tous les pays d'origine jusqu'à Chicago.

In[9]:=
Click for copyable input
With[{chicago = Entity["City", {"Chicago", "Illinois", "UnitedStates"}]}, GeoGraphics[{Darker[Green], GeoPath[{chicago, #} & /@ nationalityTallies[[All, 1]], "Geodesic"]}, GeoRange -> "World", GeoProjection -> "Robinson", GeoCenter -> chicago]]
Out[9]=

Créez une carte thermique des États-Unis montrant les lieux d'origine des participants américains.

Afficher l'entrée complète en Wolfram Language
In[10]:=
Click for copyable input
anyUS = EntityClass["ChicagoMarathon2015", "Country" -> Entity["Country", "UnitedStates"]] // EntityList;
In[11]:=
Click for copyable input
allUSCities = DeleteMissing[ EntityValue[anyUS, EntityProperty["ChicagoMarathon2015", "CityState"]]]; talliedUSCities = Tally[allUSCities]; coordsUS = EntityValue[talliedUSCities[[All, 1]], "Position"]; cityPositions = Transpose[{coordsUS, talliedUSCities[[All, -1]]^0.5}]; projectionUS = {"LambertAzimuthal", "Centering" -> GeoPosition[{37.1558, -95.883}]}; data = {GeoGridPosition[#1, projectionUS][[1]], #2} & @@@ cityPositions; weightedData = WeightedData @@ Transpose[data]; cityDensityP = SmoothKernelDistribution[weightedData, "Silverman"]; cityDensity[{lat_Real, lon_Real}] := With[{xy = First[GeoGridPosition[GeoPosition[{lat, lon}], projectionUS]]}, Flatten[{xy, PDF[cityDensityP, xy]}]]; area = GeoVariant[Entity["Country", "UnitedStates"], "DefaultMapArea"]; {{latminUS, latmaxUS}, {lonminUS, lonmaxUS}} = GeoBounds[area];
In[11]:=
Click for copyable input
cityPlot = ContourPlot[ Sqrt[Last[cityDensity[{lat, lon}]]], {lon, lonminUS, lonmaxUS}, {lat, latminUS, latmaxUS}, Frame -> False, PlotRange -> All, Contours -> 100, MaxRecursion -> 2, ColorFunction -> ColorData["DarkRainbow"], PlotRangePadding -> 0, ContourStyle -> None];
In[11]:=
Click for copyable input
GeoGraphics[{GeoStyling[{"GeoImage", cityPlot}], Polygon[area], Gray, Opacity[1], PointSize[0.001], Point[coordsUS]}, GeoRange -> area]
Out[12]=

Trouvez le nombre de coureurs par variation par rapport à la moyenne.

In[13]:=
Click for copyable input
allkm = Table[ Normal[allTimeSplits[[i]][2 ;;, "Time"]], {i, Length[allTimeSplits]}];
In[13]:=
Click for copyable input
allsplitbins = DeleteMissing[Transpose[allkm], 2];
In[13]:=
Click for copyable input
meanall = Table[N[Mean[allsplitbins[[i]]]], {i, Length[allsplitbins]}]
Out[13]=
In[13]:=
Click for copyable input
marathondistances = (allTimeSplits[[1]])[All, "Split"] // Normal
Out[13]=
In[13]:=
Click for copyable input
differencesall = Table[{marathondistances[[i + 1]], allsplitbins[[i]] - meanall[[i]]}, {i, Length[allsplitbins]}];
In[13]:=
Click for copyable input
allHistograms = Histogram[#2, {60}, PlotLabel -> NumberForm[#1, {3, 1}]] & @@@ differencesall;

Créez des histogrammes pour chaque division.

In[14]:=
Click for copyable input
Grid[Partition[allHistograms, UpTo[3]]]
Out[15]=

Tracez une distribution à noyau lisse des différences entre les écarts et les moyennes des coureurs.

Afficher l'entrée complète en Wolfram Language
In[16]:=
Click for copyable input
skd = Table[ SmoothKernelDistribution[ QuantityMagnitude[differencesall[[i, 2]]]], {i, Length[differencesall]}];
In[17]:=
Click for copyable input
Plot[ Evaluate[Table[PDF[skd[[i]], t], {i, Length[skd]}]], {t, -8000, 10000}, PlotRange -> All, PlotLegends -> Table[If[IntegerQ[QuantityMagnitude[diff = differencesall[[i, 1]]]], diff, Round[diff, .1]], {i, Length[differencesall]}] ]
Out[17]=

Exemples connexes

de en es ja ko pt-br ru zh