#python #pandas #flask #tweepy
#python #панды #flask #tweepy #pandas
Вопрос:
Я пытаюсь распечатать полную строку для каждого столбца в pandas с помощью Flask. Более конкретно, столбец tweet_text сокращен,
Это следует из руководства:https://www.analyticsvidhya.com/blog/2020/04/how-to-deploy-machine-learning-model-flask /
В настоящее время я получаю следующий вывод.
created_at tweet_id tweet_text prediction
0 2020-09-02 13:39:10 1301152689217126403 smh my head at disney every time I think about... 0
1 2020-09-02 13:39:09 1301152689137487872 Tapos parehong may black diko bet kulay nila 1
2 2020-09-02 13:39:09 1301152688898363392 RT @SmokingSkills_: Indian army yesterday only... 0
3 2020-09-02 13:39:09 1301152688286183428 RT @AmonAmarthBand: The longship burst into fl... 0
4 2020-09-02 13:39:09 1301152688202231811 RT @VANTEMETAL: no hate to on but she ain’t bl... 1
Если я использую pd.set_option('display.max_colwidth', 1000)
, результаты будут еще хуже.
created_at ... prediction
0 2020-09-02 13:50:52 ... 1
1 2020-09-02 13:50:52 ... 0
2 2020-09-02 13:50:52 ... 0
3 2020-09-02 13:50:52 ... 0
4 2020-09-02 13:50:52 ... 0
app.py
# Flask connection
from flask import Flask, render_template, request, redirect, url_for
from joblib import load
from get_tweets import get_related_tweets
pipeline = load('text_classification.joblib')
def requestResults(name):
tweets = get_related_tweets(name)
tweets['prediction'] = pipeline.predict(tweets['tweet_text'])
data = str(tweets.prediction.value_counts()) 'nn'
return data str(tweets)
app = Flask(__name__)
# Render default webpage
@app.route('/')
def home():
return render_template('home.html')
# When post method detected, redirect to success function
@app.route('/', methods=['POST', 'GET'])
def get_data():
if request.method == 'POST':
user = request.form['search']
return redirect(url_for('success', name=user))
# Get data for requested query
@app.route('/success/<name>')
def success(name):
return '<xmp>' str(requestResults(name)) ' </xmp> '
# Start the Flask server
app.run(debug=True)
get_tweets.py
# Setup tweepy to access Twitter API
import tweepy
import time
import pandas as pd
#pd.set_option('display.max_colwidth', 1000)
authentication = tweepy.OAuthHandler(api_key, api_secret_key)
authentication.set_access_token(access_token, access_token_secret)
api = tweepy.API(authentication, wait_on_rate_limit=True)
def get_related_tweets(text_query):
tweets_list = []
count = 50
try:
for tweet in api.search(q=text_query, count=count):
print(tweet.text)
tweets_list.append({'created_at': tweet.created_at,
'tweet_id': tweet.id,
'tweet_text': tweet.text})
return pd.DataFrame.from_dict(tweets_list)
except BaseException as e:
print('failed on_status,', str(e))
time.sleep(3)
Ответ №1:
Я обнаружил, что преобразование фрейма данных pandas в строку через str (df) ограничивает ширину каждого столбца. Преобразование с помощью df.to_string() работает без этого ограничения, следовательно, без использования многоточия.
def requestResults(name):
tweets = get_related_tweets(name)
tweets['prediction'] = pipeline.predict(tweets['tweet_text'])
data = str(tweets.prediction.value_counts()) 'nn'
return data tweets.to_string()