GeoPandas GeoDataFrame Transformation - PullRequest
0 голосов
/ 16 декабря 2018

Уважаемое сообщество 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

Что важно отметить:

  1. Строки агрегированы одинаковыми значениями в 'INCIDENTDATE'
  2. Сумма общих преступлений на одного полигона в год взята в столбце 'TOTAL_CRIME_COUNT'
  3. СуммаДля каждого полигона взяты отдельные точки интереса.Каждая точка интереса должна быть в отдельной колонке.

Я был бы так счастлив даже за малейший намек на решение.Я также открыт для совершенно разных подходов к достижению моего окончательного DataFrame, так как я даже не уверен, правильно ли я делаю это с самого начала.

Большое спасибо, если вы сделали это так далеко!

Чарльз

PS: Я прошу прощения за грамматические ошибки.Английский не мой родной язык.

...