df.to_csv не генерирует файл CSV даже с полностью указанным путем к файлу

#python #pandas

#python #pandas

Вопрос:

Все еще пытаюсь изучить Python. В качестве учебного упражнения я попытался написать скрипт для извлечения исторических данных биткойнов за последние 5 лет из coinmarketcap.com . У меня это так, что никаких ошибок не генерируется, но в конце не создается CSV-файл. Я читал в другом месте, что он может сохраняться в другом каталоге, но я вижу, что рабочий каталог находится там, где я ищу, и я использовал df.to_csv в другом скрипте в этом каталоге, и он сохранен правильно.

Я использую Spyder через ноутбуки Anaconda. Вот мой скрипт:

 from bs4 import BeautifulSoup
import requests
import pandas as pd
import json

coins = {}

for i in coins:
        page = requests.get('https://coinmarketcap.com/currencies/bitcoin/historical-data/?start=20150920amp;end=20200918')
        soup = BeautifulSoup(page.content, 'html.parser')
        data = soup.find('script', id="__NEXT_DATA__",type="application/json")
        historical_data = json.loads(data.contents[0]) 
        quotes = historical_data['props']['initialState']['cryptocurrency']['ohlcvHistorical']['i']['quotes']

        market_cap = []
        volume = []
        timestamp = []
        name = []
        symbol = []
        slug = []
    
        df = pd.DataFrame(columns = ['marketcap','volume','timestamp','name','symbol','slug'])
        for j in quotes:
            market_cap.append(j['quote']['USD']['market_cap'])
            volume.append(j['quote']['USD']['volume'])
            timestamp.append(j['quote']['USD']['timestamp'])
            name.append(info['name'])
            symbol.append(info['symbol'])
            slug.append(coins[i])
            df['marketcap'] = market_cap
            df['volume'] = volume
            df['timestamp'] = timestamp
            df['name'] = name
            df['symbol'] = symbol
            df['slug'] = slug
        df.to_csv('C:\Python34\Projects\Trends\btcvalue.csv', index=False)
  

Комментарии:

1. coins пусто, поэтому цикл будет иметь 0 (нулевых) итераций, и код в нем никогда не будет выполнен.

Ответ №1:

Ваш первый цикл for никогда не будет выполняться, потому coins что всегда пуст. И я бы предложил df.to_csv выйти из цикла for .

 [...] 

coins = {}

for i in coins:

[...]

        df['slug'] = slug
df.to_csv('C:\Python34\Projects\Trends\btcvalue.csv', index=False)