Я пытаюсь создать функцию, которая будет извлекать данные о местоположении Foursquare для окружения каждого местоположения с помощью поискового запроса. - PullRequest
1 голос
/ 28 мая 2020

У меня есть набор данных со списком колледжей в Нью-Йорке C. Я пытаюсь создать функцию, которая будет извлекать данные о месте проведения Foursquare для окружения каждого места с помощью поискового запроса и создавать новый фрейм данных, который будет сочетать как колледжи Нью-Йорка, так и места проведения Foursquare. Это образец моего фрейма данных колледжа.

College                                       # Students    Latitude    Longitude
CUNY Borough of Manhattan Community College     26,606      40.7172     -74.0122
Suffolk County Community College                26,600      40.8486     -73.059
Nassau Community College                        22,374      40.0548     -86.943

Функция, которую я использую для получения данных из foursquare:

def getNearbyhotspots(names, latitudes, longitudes, radius=50):

search_query = 'pubs'
venues_list=[]
for name, lat, lng in zip(names, latitudes, longitudes):
    print(name)

    # create the API request URL
    url = 'https://api.foursquare.com/v2/venues/search?client_id={}&client_secret={}&ll={},{}&v={}&query={}&radius={}'.\
    format(CLIENT_ID,
           CLIENT_SECRET,
           lat,
           lng,
           VERSION,
           search_query,
           radius,
           )

    # make the GET request
    results = requests.get(url).json()['response']['venues']

    # return only relevant information for each nearby venue
    venues_list.append([(
        name, 
        lat, 
        lng, 
        v[0]['name'], 
        v[0]['location']['lat'], 
        v[0]['location']['lng'],  
        v[0]['categories'][0]['name']) for v in results])

nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])
nearby_venues.columns = ['College', 
              'College Latitude', 
              'College Longitude', 
              'Venue', 
              'Venue Latitude', 
              'Venue Longitude', 
              'Venue Category']
return(nearby_venues)

Я вызываю функцию и получаю сообщение об ошибке. например:

ny_pubs = getNearbyhotspots(names=cc_df['College'],
                        latitudes=cc_df['Latitude'],
                        longitudes=cc_df['Longitude']
                        )

CUNY Borough of Manhattan Community College
Suffolk County Community College
Nassau Community College
ValueError: Length mismatch: Expected axis has 0 elements, new values have 7 elements

Хотя я создал фиктивный фрейм данных «near_ways» с 7 столбцами.

Я подозреваю, что проблема в функции с добавлением в список venues_list.

Результат для случайного значения координаты выглядит следующим образом:

results = requests.get(url).json()['response']['venues']

[{'id': '561b1281498e2a8bbf3b0fff',
'name': "McAteer's Pub",
'location': {'lat': 41.069234,
'lng': -73.799114,
'labeledLatLngs': [{'label': 'display',
 'lat': 41.069234,
 'lng': -73.799114}],
'distance': 708,
'cc': 'US',
'city': 'Greenburgh',
'state': 'NY',
'country': 'United States',
'formattedAddress': ['Greenburgh, NY', 'United States']},
'categories': [{'id': '4bf58dd8d48988d116941735',
'name': 'Bar',
'pluralName': 'Bars',
'shortName': 'Bar',
'icon': {'prefix': 'https://ss3.4sqi.net/img/categories_v2/nightlife/pub_',
 'suffix': '.png'},
'primary': True}],
'referralId': 'v-1590678183',
'hasPerk': False}]

1 Ответ

0 голосов
/ 29 мая 2020

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

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_json.html

В противном случае эту строку

nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])

, вероятно, следует переписать как что-то вроде

nearby_venues = pd.DataFrame(venues_list, columns = LIST_OF_COLUMNS)

, потому что pandas может просто использовать список записей и сделать из него фрейм данных, если он имеет разумную форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...