Wolfram Language

Acceso enriquecido a la base de conocimiento

Análisis de los números de la Maratón de Chicago del 2015

La Maratón de Chicago del 11 de octubre de 2015 contó con 45.000 corredores. Más de 37.000 completaron la carrera, y los detalles del rendimiento de cada corredor fueron registrados cuidadosamente. Explore y visualice las características de los corredores y su rendimiento usando un almacén de entidades personalizado que contenga estos datos.

Cargue un almacén de entidades de la maratón desde 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]=

Registre el almacén para esta sesión.

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

Extraiga el número total de corredores y, usando una clase de entidades implícitamente definida, extraiga el número de participantes femeninos y masculinos.

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]=

Seleccione cinco corredores al azar.

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

Vea las propiedades almacenadas de un corredor en particular.

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

Extraiga la contabilidad de las nacionalidades de los corredores y cree una tabla con las nacionalidades más comunes.

In[7]:=
Click for copyable input
nationalityTallies = Reverse[SortBy[ Tally[EntityValue["ChicagoMarathon2015", EntityProperty["ChicagoMarathon2015", "Country"]]], Last]];
muestre la entrada completa de 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=

Visualice las rutas geodésicas de todos los países de origen hasta 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]=

Construya un mapa de calor de los EE.UU. que muestre las ubicaciones de los participantes estadounidenses.

muestre la entrada completa de 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]=

Encuentre los números de los corredores por la variación de la media de división.

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;

Genere histogramas para cada división.

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

Grafique una distribución de núcleo alisada de las diferencias entre las divisiones de los corredores y las medias.

muestre la entrada completa de 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]=

Ejemplos relacionados

de en fr ja ko pt-br ru zh