Не уверен, почему столбцы возвращают ноль - PullRequest
0 голосов
/ 21 июня 2020

это моя первая неделя, когда я пытаюсь использовать python. По моему вопросу вы заметите, что я новичок и, вероятно, это очень глупый вопрос.

Я пытаюсь использовать тенденции Google и улучшить код, чтобы получить некоторые автоматические результаты. У меня два кода, первый работает отлично. Во втором я решил создать список в файле .txt. Он читает список, но по какой-то причине тенденция Google возвращает данные только для первого ключевого слова (он заполняет нулем следующие столбцы).

Код 1 - отлично работает

import pytrends
from pytrends.request import TrendReq
import pandas as pd
import time
import datetime
from datetime import datetime, date, time

pytrend = TrendReq()

searches = ['detox', 'water fasting', 'benefits of fasting', 'fasting benefits',
'acidic', 'water diet', 'ozone therapy', 'colon hydrotherapy', 'water fast']

groupkeywords = list(zip(*[iter(searches)]*1))
groupkeywords = [list(x) for x in groupkeywords]

dicti = {}
i = 1
for trending in groupkeywords:
    pytrend.build_payload(trending, timeframe = 'today 3-m', geo = 'GB')
    dicti[i] = pytrend.interest_over_time()
    i+=1

result = pd.concat(dicti, axis=1)
result.columns = result.columns.droplevel(0)
result = result.drop('isPartial', axis = 1)
result.reset_index(level=0, inplace=True)
print(result)

Код 2 - не работает. Я создал текстовый файл «test» в той же папке, что и код.

Это 2 кода:

import pytrends
from pytrends.request import TrendReq
import pandas as pd
import time
import datetime
import sys
from datetime import datetime, date, time

pytrend = TrendReq()

file = open('test.txt','r')
f = file.readlines()
file.close()

searches = []
for line in f:
    searches.append(line.strip())
    
groupkeywords = list(zip(*[iter(searches)]*len(searches)))
groupkeywords = [list(x) for x in groupkeywords]

dicti = {}
i = 1
for trending in groupkeywords:
    pytrend.build_payload(trending, timeframe = 'today 3-m', geo = 'GB')
    dicti[i] = pytrend.interest_over_time()
    i+=1

result = pd.concat(dicti, axis=1)
result.columns = result.columns.droplevel(0)
result = result.drop('isPartial', axis = 1)
result.reset_index(level=0, inplace=True)
print(result)

Попробовав много разных вещей, я понял, что даже первый код не работает, когда я меняю слова (в поисках). Пример ниже не работал:

searches = ['Casillero del Diablo', 'Don Melchor', 'Marques de Casa Concha', 'CdD Reserva Especial', 'Cono Sur Organico']

1 Ответ

1 голос
/ 21 июня 2020

Что касается вопроса, первое, что мы видим, это то, что вам не нужно вводить текст в '' в текстовом файле.

Мои данные:

detox,
water fasting,
benefits of fasting,
fasting benefits,
acidic,
water diet,
ozone therapy,
colon hydrotherapy,
water fast

Во-вторых, вам нужно разделить строку по разделителю и добавить ее в результаты поиска.

searches = []
for line in f:
    searches.append(line.split(',')[0])

Это гарантирует, что массив поиска по желанию:

Вывод:

Out[13]: 
['detox',
 'water fasting',
 'benefits of fasting',
 'fasting benefits',
 'acidic',
 'water diet',
 'ozone therapy',
 'colon hydrotherapy',
 'water fast']
...