voila les donnees que j'ai : Field Description Collision ID Unique record code generated by system Date Occurrence date of collision Time Occurrence time of collision Borough Borough where collision occurred Street Name Street on which the collision occurred Cross Street Nearest cross street to the collision Latitude Latitude coordinate for Global Coordinate System WGS 1984 decimal degrees (EPSG 4326) Longitude Longitude coordinate for Global Coordinate System WGS 1984 decimal degrees (EPSG 4326) Contributing Factor Factors contributing to the collision for designated vehicle Vehicle Type Type of vehicle Persons Injured Total number of persons injured (pedestrians + cyclists + motorists) Persons Killed Total number of persons killed (pedestrians + cyclists + motorists) Pedestrians Injured Number of pedestrians injured Pedestrians Killed Number of pedestrians killed Cyclists Injured Number of cyclists injured Cyclists Killed Number of cyclists killed Motorists Injured Number of vehicle occupants injured Motorists Killed Number of vehicle occupants killed
======================================================
je veux faire une analyse statistique avec julia : Comparez le pourcentage du nombre total d’accidents par mois. Remarquez-vous des tendances saisonnières ?
Ventilez la fréquence des accidents par jour de la semaine et par heure de la journée. D’après ces données, à quel moment les accidents sont-ils les plus fréquents ?
Dans quelle rue le plus d’accidents a-t-il été signalé ? Qu’est-ce que cela représente en % de tous les accidents signalés ?
Quel était le facteur contributif le plus courant pour les accidents signalés ? Qu’en est-il des accidents mortels en particulier ?
voila deux ligne de donnees :
Collision ID | Dates | Times | Borough | Street_Name | Cross_Street | Latitude | Longitude | Contributing_Factor | Vehicle_Type | Persons_Injured | Persons_Killed | Pedestrians_Injured | Pedestrians_Killed | Cyclists_Injured | Cyclists_Killed | Motorists_Injured | Motorists_Killed |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4380940 | 1/1/2021 | 7:40:00 | Brooklyn | Cortelyou Road | Mc Donald Avenue | 40.63791 | -73.97864 | Unspecified | Passenger Vehicle | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
peux tu me faire une etude statistique avec des graphes significatifs avec julia en prenant compte tout ce que j'ai dit en avant! (je travail sur jupyter lab)
Pour réaliser une analyse statistique avec des graphes significatifs en Julia sur un jeu de données de collisions routières, suivez ces étapes dans votre environnement JupyterLab. Voici un échantillon de code pour chaque question pos :
using Pkg Pkg.add("DataFrames") Pkg.add("CSV") P("Dates") Pkg.add("Plots")
using CSVusing DataFrames using Dates using Plots # Voici comment vous pourriez charger vos données un fichier CSV. df = CSV.read("chemin_vers_votre_fichier", DataFrame)
a. Convertir les colonnes Date
et `` en DateTime
de Julia :
df[:DateTime] = [DateTime(join([df.Dates[i], df.Times[i]] "mm/dd/yyyy HH:MM:SS") for i in 1:nrow)]
df[:Month = month.(df.DateTime) df[:Weekday] = Dates.dayname.(df) df[:Hour] = hour.(df.DateTime)
####1. Pourcentage du nombre total d'accidents par mois et détecter lesances saisonnières :
accidents_by_month = groupby(df, :Month) accidents_month_count = combine(accidents_by_month, nrow => :Count) accidents_month_count[:Percentage] = accidents_monthly_count.Count / sum(accidents_monthly_count.Count) * 100 bar(accidentsly_count.Month, accidents_monthly_count.Percentage, xlabel="Mois", ylabel="Pourcentage d'accidents",="Pourcentage d'accidents par mois")
accidents_by_weekday =by(df, :Weekday) weekday_counts = combine(accidents_by_weekday,row => :Count) accidents_by_hour = groupby(df, :Hour) hourly_counts = combine(acc_by_hour, nrow => :Count) plot(weekday.Weekday, weekday_counts.Count, label="Jour de la semaine", title="Fréquence des accidents en", xlabel="Jour de la semaine", ylabel="Nombre d'accidents", legend=:right) plot!(hourly_counts.Hour, hourly_counts.Count, label="He de la journée", title="Fréquence des accidents par heure", xlabel="Heure", ylabel="Nombre d'accidents", legend=:topright)
accidents_by_street = groupby(df, :_Name) street_counts = combine(accidents_by_street, nrow => :Count) sort!(street_counts, :Count, rev=truetop_street = street_counts[1, :] top_street_name = top_street.Street_Name top_street_percentage = top_street.Count / sum(st_counts.Count) * 100
contrib_factors = groupby(df, :Contributing_Factor) factor_counts = combine(contrib, nrow => :Count) sort!(factor_counts, :Count, rev=true) most_common_factor = factor_counts[1 :] fatal_accidents = filter(row -> row.Persons_Killed > 0, df) fatal_factors = group(fatal_accidents, :Contributing_Factor) fatal_factor_counts = combine(fatal_factors, nrow => :Countsort!(fatal_factor_counts, :Count, rev=true) most_common_fatal_factor = fatal_factor_counts[1, :]
Chaque étape doit être ajustée en fonction duéma exact de vos données. Assurez-vous de vérifier que les noms des colonnes et les méthodes de traitement correspondent à vos données. Utilisez le chemin vers votre fichier de données lors du chargement avecCSV.read`.
Veuillez aussi noter que vous devez exécuter ce code dans votre environnementupyterLab où vous avez accès à vos données et pouvez installer des packages. L'utilisation d'une version mise à jour de Julia (la dernière est recommandée) permet une meilleure compatibilité des packages et améliore les fonctionnalités.
ArgumentError: syntax df[column] is not supported use df[!, column] instead
Stacktrace: [1] setindex!(#unused#::DataFrame, #unused#::Vector{Float64}, #unused#::Symbol) @ DataFrames C:\Users\moumn.julia\packages\DataFrames\58MUJ\src\abstractdataframe\abstractdataframe.jl:2483 [2] top-level scope @ In[245]:3
L'erreur que vous avez rencontrée indique que l'indexation de votre DataFrame avec des crochets directs n'est plus une syntaxe val dans les versions récentes de la bibliothèque DataFrames en Julia. À la, vous devriez utiliser df[!, :column]
pour modifier une colonne existantecela agit sur le DataFrame df
"in-place") ou df[:, :column]
pour travailler avec une copie de la colon.
Voici le correctif pour les erreurs de syntax dans le code que vous avez soumis :
using CSV using DataFrames using Dates using Plots Chargez votre DataFrame ici # Remplacez 'chemin_vers_votreichier' par le chemin d'accès réel à votre fichier CSVdf = CSV.read("chemin_vers_votre_f.csv", DataFrame) # Transformation des données df.DateTime = [DateTime(df.Dates[i], "mm/dd/yyyy") + Time(df.T[i]) for i in 1:nrow(df)] df = month.(df.DateTime) df.Weekday = Dates.dayname.(df.DateTime) df.Hour = hour.(df.DateTime) Continuez ici avec l’analyse et la création deiques...
À présent, chaque colonne supplémentaire que vous souhaitez créer dans df doit utiliser
df[!, :]pour agir directement sur le DataFrame dorigine ou
df[:, :]` pour créer et travailler sur une copie. Veillez à utiliser le pour vos besoins.
Pour les étapes analytiques, cela signifie que votre code pourrait ressembler à ça :
Par exemple, pour créer une nouvelle colonne 'Month' df[!, :Month] = month.(df.DateTime) # Même chose les autres colonnes df[!, :Weekday] Dates.dayofweek.(df.DateTime) df[!, :Hour] = hour.(df.DateTime) # Ensuite, vous pouvez continuer avec analyses et visualisations
Mettez à jour votre code en suiv ce format pour respecter les bonnes pratiques de la version actuelle des DataFrames en Julia.
peux tu me modifier ce code : df[:DateTime] = [DateTime(join([df.Dates[i], df.Times[i]]), "mm/dd/yyyy HH:MM:SS") for i in 1:nrow(df)] vue que les deux variables sont deja transforme
Bien sûr, pour modifier ces colonnes de date et d'heure en utilis la syntaxe correcte en Julia avec le package DataFrames, il suffit deer les crochets d'indexation autour de :DateTime
et de remplacer le join
une création de chaîne de caractères. Voici comment cela être fait si les données des colonnes Dates
et Times
déjà au format approprié pour être directement passées à fonction DateTime
.
df[!, :DateTime] = [DateTime(df.Dates[i]*" "*df.Times[i], "mm/dd/yyyy HH::SS") for i in 1:nrows(df)]
Ceci cr nouvelle colonne DateTime
dans le DataFrame df
, en combinant les valeurs des colonnes et `Times` pour chaque ligne. La fonction
est appelée avec le format "mm/dd/yyyy HH:MM:SS"
pour convertir la chaîne combinée en un objetDateTime`.
Assurez-vous que le format "mm/dd/yyyy HH:MM:"
corresponde exactement aux formats de vos colonnes Dates
et Times
. Si les formats de date et d'heure sont, ajustez le format en conséquence.
ils disait que:
UndefVarError: nrows
not defined
Stacktrace: [1] top-level scope @ In[260]:1
Je m'excuse pour la confusion. Il semble y avoir une petite erreur.
En Julia, la pour obtenir le nombre de lignes dans un DataFrame estnrowau lieu de
nrows`.
Voici la correction cette partie du code :
df[!,DateTime] = [DateTime(df.Dates[i]*" "*df.Times[i], "/dd/yyyy HH:MM:SS") for i in 1:nrow)]
En utilisant nrow
au lieu de `nrows cela devrait résoudre l'erreur. Veuillezayer cette correction et revenez vers moi si vous rencontrez d'autres difficultés.
correct me this code: UndefVarError: nrows
not defined
Stacktrace: [1] top-level scope @ In[260]:1
I apologize for the mistake. It seems that I made a typo in the previous response. The correct function to obtain the number of rows in a DataFrame in Julia is nrow
instead of nrows
. Here's the corrected code:
df[!, :DateTime] = [DateTime(df.Dates[i]*" "*df.Times[i], "mm/dd/yyyy HH:MM:SS") for i in 1:nrow(df)]
Using nrow
instead of nrows
should resolve the error. Please try this correction and let me know if you encounter any further issues.
correct me tgis code : df[!, :DateTime] = [DateTime(df.Dates[i]*" "*df.Times[i]) for i in 1:nrow(df)]
The code you've provided looks correct for combining the Dates
and Times
columns into a new DateTime
column in a DataFrame in Julia. The DateTime
function is used to create a new DateTime object by combining the date and time strings from the respective columns.
Here's the corrected version of the code:
df[!, :DateTime] = [DateTime(string(df.Dates[i], " ", df.Times[i])) for i in 1:nrow(df)]
This line of code iterates through the rows of the DataFrame, combines the Dates
and Times
columns into a single string, and then creates a new DateTime
object for each row. This new DateTime
object is then assigned to the DateTime
column in the DataFrame.
If you have any other questions or need further assistance, feel free to ask!
df.Dates[i] is a date type and df.times[i] is a time type
I see, thank you for the clarification. Given that df.Dates[i]
is of type Date anddf.Times[i]` is of type Time, you can construct a DateTime from values directly. Here's the corrected code accordingly:
df[!, :DateTime] = [DateTime(dfates[i], df.Times[i]) for i in 1:nrow(df)] ` With this adjustment, the code takes the Date and Time values from the respective columns and creates a new DateTime object for each row in the DataFrame. This should accurately produce the desired DateTime column based on the existing Date and Time columns. If you have any further questions or need additional assistance, feel free to ask!
in this syntax : df[:Hour] = hour.(df.DateTime)
In the syntax df[:Hour] = hour.(df.DateTime) it is presumed that
df.DateTimeis a column in the DataFrame
dfit contains DateTime objects. The
hour.function is then used to extract the hour component from each DateTime value and store the results in a new column labeled
:Hour`.
This syntax creates a new column :Hour
in the DataFrame df
and it with the hour component of each DateTime value in the df.DateTime
column.
If you have any further questions or need additional assistance, feel free to ask!
they gives me this error message : ArgumentError: syntax df[column] is not supported use df[!, column] instead
Stacktrace: [1] setindex!(#unused#::DataFrame, #unused#::Vector{Int64}, #unused#::Symbol) @ DataFrames C:\Users\moumn.julia\packages\DataFrames\58MUJ\src\abstractdataframe\abstractdataframe.jl:2483 [2] top-level scope @ In[279]:3
I apologize for the confusion. The error message is pointing to the use of the syntax df[column]
which is no longer supported. Instead, the correct syntax for assigning to a column in a DataFrame is df[!, column]
. Here's the corrected syntax for creating a new :Hour
column using the hour
function:
df[!, :Hour] = hour.(df.DateTime)
In this corrected syntax, df[!, :Hour]
creates a new column labeled :Hour
using the hour
function to extract the hour component from each DateTime value in the df.DateTime
column.
I hope this helps to resolve the issue. If you have any other questions or need further assistance, feel free to ask!
correct me also those : df[:Month] = month.(df.DateTime) df[!:Weekday] = Dates.dayname.(df.DateTime)
Certainly! In the latest version of the DataFrames package in Julia, the correct syntax for adding new columns to a DataFrame is using the !
notation. Here are the corrected versions of the provided syntaxes:
df[!, :Month] = month.(df.DateTimedf[!, :Weekday] = Dates.dayname.(df.DateTime)
With these corrections, the new columns :Month
and :day
will be added to the DataFrame df
, containing extracted month and weekday values from the df.DateTime
column, respectively.
If you have any more questions or need further assistance, feel free to ask!