J'ai un ensemble de données de médias sociaux géo-localisés pour lesquels j'essaie de filtrer par la fréquence de user_id
supérieur à 1 (utilisateurs qui ont posté 2 fois ou plus) . Je voudrais filtrer ceci afin que je puisse nettoyer davantage les données de trajectoire que je crée.Filtre Pandas df par le compte d'une colonne et écrire des données
Exemple de code:
# Import Data
data = pd.read_csv('path', delimiter=',', engine='python')
#print len(data),"rows"
#print data
# Create Data Fame
df = pd.DataFrame(data, columns=['user_id','timestamp','latitude','longitude'])
#print data.head()
# Get a list of unique user_id values
uniqueIds = np.unique(data['user_id'].values)
# Get the ordered (by timestamp) coordinates for each user_id
output = [[id,data.loc[data['user_id']==id].sort_values(by='timestamp')['latitude','longitude'].values.tolist()] for id in uniqueIds]
# Save outputs
outputs = pd.DataFrame(output)
#print outputs
outputs.to_csv('path', index=False, header=False)
J'ai essayé d'utiliser df[].value_counts()
pour obtenir un compte de user_id, puis passer> 1 dans la ligne output = [[......data['user_id']==id>1].....
cependant, qui ne fonctionne pas. Est-il possible d'ajouter la fréquence de user_id
en tant qu'argument supplémentaire pour coder et extraire des informations uniquement pour ces utilisateurs?
données Exemple:
user_id, timestamp, latitude, longitude
478134225, 3/12/2017 9:04, 38.8940974, -77.0276216
478103585, 3/12/2017 9:04, 38.882584, -77.1124701
478073193, 3/12/2017 9:07, 39.00027849, -77.09480086
476194185, 3/12/2017 9:14, 38.8048355, -77.0469214
476162349, 3/12/2017 9:16, 38.8940974, -77.0276216
478073193, 3/12/2017 9:05, 38.8549, -76.8752
477899275, 3/12/2017 9:08, 38.90181532, -77.03733586
477452890, 3/12/2017 9:08, 38.96117237, -76.95561893
478073193, 3/12/2017 9:05, 38.7188716, -77.1542684
double possible de [Python pandas géants: exclure les lignes ci-dessous un certain nombre de fréquences] (http://stackoverflow.com/questions/30485151/python-pandas-exclude-rows-below-a-certain-frequency- count) –