Уважаемое сообщество stackoverflow,
Я провел последние несколько недель, читая документацию и статьи по всему Python, Pandas и GeoPandas.К сожалению, программирование для меня все еще не так интуитивно, как хотелось бы, и, поскольку я не имею опыта программирования, связанного с GeoPandas, для меня это просто кошмар.
У меня довольно сложный (по крайней мере для меня) geopandas.GeoDataFrame
, что мне нужно преобразовать, чтобы сделать дальнейший регрессионный анализ.К сожалению, даже после бесчисленных поисков здесь на stackoverflow и многочисленных других интернет-страницах я все еще не могу преобразовать свои данные подходящим способом.
Мой GeoDataFrame выглядит следующим образом:
INCIDENTDATE CATEGORY_left CATEGORY_right \
POLYGON
1 2009 BURGLARY restaurant
1 2009 HOMICIDE restaurant
1 2010 ASSAULT restaurant
1 2011 ASSAULT restaurant
1 2012 LARCENY restaurant
1 2012 AGGRAVATED ASSAULT restaurant
1 2012 BURGLARY restaurant
1 2012 DAMAGE TO PROPERTY restaurant
1 2013 AGGRAVATED ASSAULT restaurant
1 2014 BURGLARY restaurant
3 2010 MURDER/INFORMATION crossing
3 2011 AGGRAVATED ASSAULT crossing
3 2011 BURGLARY crossing
3 2011 ASSAULT crossing
3 2012 AGGRAVATED ASSAULT crossing
3 2012 MURDER/INFORMATION crossing
3 2013 DANGEROUS DRUGS crossing
3 2014 DAMAGE TO PROPERTY crossing
3 2015 ASSAULT crossing
geometry shape_area
POLYGON
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
'CATEGORY_left'
- это geopandas.GeoDataFrame
, который был соединен с использованием geopandas.sjoin
и геометрических точек.Он содержит различные категории преступлений, связанных с преступностью, и выглядит следующим образом:
'CATEGORY_left'
INCIDENTDATE CATEGORY geometry
0 2009 LARCENY POINT (-83.06870000000001 42.3516)
1 2009 ASSAULT POINT (-82.9504 42.4262)
2 2009 ASSAULT POINT (-83.2657 42.4371)
3 2009 DAMAGE TO PROPERTY POINT (-83.03189999999999 42.4381)
4 2009 STOLEN VEHICLE POINT (-83.1499 42.4094)
'CATEGORY_right'
также является geopandas.GeoDataFrame
, к которому я присоединилсяgeopandas.sjoin
также.Он содержит различные точки интереса, которые зависят только от 'POLYGON'
их входа. Они не меняются со временем.
'CATEGORY_right'
CATEGORY geometry
13243 atm POINT (-83.06221670000002 42.32472120000001)
13244 atm POINT (-83.0711901 42.3213266)
13245 atm POINT (-83.0232692 42.34089829999999)
24624 supermarket POINT (-83.2400998 42.37158820000001)
24625 supermarket POINT (-82.9728123 42.3872246)
Для проведения регрессионного анализа мне нужно, чтобы он был в следующей форме.
Финал:
INCIDENTDATE TOTAL_CRIME_COUNT RESTAURANT_COUNT\
POLYGON
1 2009 4396 30
1 2010 6455 30
1 2011 7434 30
1 2012 3843 30
1 2013 5354 30
1 2014 3425 30
3 2010 4564 10
3 2011 3234 10
3 2012 8754 10
3 2013 4829 10
3 2014 9583 10
3 2015 4354 10
geometry shape_area
POLYGON
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
1 POLYGON ((-83.13630642653472 42.43895550416347... 3.959841e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
3 POLYGON ((-83.17870657596477 42.39269734838572... 3.918602e+06
Что важно отметить:
- Строки агрегированы одинаковыми значениями в
'INCIDENTDATE'
- Сумма общих преступлений на одного полигона в год взята в столбце
'TOTAL_CRIME_COUNT'
- СуммаДля каждого полигона взяты отдельные точки интереса.Каждая точка интереса должна быть в отдельной колонке.
Я был бы так счастлив даже за малейший намек на решение.Я также открыт для совершенно разных подходов к достижению моего окончательного DataFrame, так как я даже не уверен, правильно ли я делаю это с самого начала.
Большое спасибо, если вы сделали это так далеко!
Чарльз
PS: Я прошу прощения за грамматические ошибки.Английский не мой родной язык.