# %load ipython_log.py
# IPython log file
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
path='./usagov_bitly_data2012-03-16-1331923249.txt'
open(path).readline()
import json
record=[json.loads(line) for line in open(path)] #Lesen Sie im JSON-Format
record[0] #Da der Inhalt der Aufzeichnung lang ist, betrachten wir vorerst nur ein Element
record[0]['tz'] #Davon ist tz der Schlüssel
time_zone=[rec['tz'] for rec in record if 'tz' in rec] #Siehe nur tz in der Aufzeichnung. Aber nur wenn es tz gab
time_zone[:10] #Sehen Sie nur die 10. Zeile von oben
def get_counts(seq):
'''
Zählen Sie, wie viele der Zeichenfolge in seq und im Wörterbuch entsprechen{'String':Menge,...}Zurück als
def get_counts(seq):#Gleiche Bedeutung wie diese, aber einfach mit defaultdict
count=defaultdict(int) #count={}
for x in seq:
if x in counts:
counts[x]+=1
else:
count[x]=1
return counts
'''
from collections import defaultdict
counts=defaultdict(int) #returns `defaultdict(<class 'int'>, {})`
for x in seq:
counts[x]+=1
return counts
counts=get_counts(time_zone)
counts['America/New_York']
len(time_zone)
Was wir tun, ist anders in der Form, aber alle sind zusammen
def top_counts(count_dict,n=10):
value_key_pairs=[(count,tz) for tz, count in count_dict.items()]
value_key_pairs.sort()
return value_key_pairs[-n:]
top_counts(counts)
from collections import Counter
counts= Counter(time_zone)
counts.most_common(10)
from pandas import DataFrame,Series
import pandas as pd
frame=DataFrame(record)
frame['tz'][:10]
tz_counts=frame['tz'].value_counts()
tz_counts[:10]
clean_tz=frame['tz'].fillna('Missing')
clean_tz[clean_tz=='']='UNknown'
clean_tz
tz_counts=clean_tz.value_counts()
tz_counts[:10]
tz_counts[:10].plot(kind='barh',rot=0)
import matplotlib.pyplot as plt
# plt.show()
frame['a'][1]
frame['a'][50]
frame['a'][51]
results=Series([x.split()[0] for x in frame.a.dropna()]) #.dropna()pandas-Methode Leere Zeile löschen Geben Sie die zu löschende Zeile mit dem Argument an
#str.split(x)Teilen Sie str in eine Liste mit x als Trennzeichen auf
#Listen Sie die durch Leerzeichen getrennten Zeichenfolgen auf(In-List-Notation), Pandas-Datenrahmen in der Serienklasse erstellen
results[:5]
results.value_counts()[:8] #value_counts()Zählen Sie die Nummer desselben Elements mit
cframe=frame[frame.a.notnull()] #Ich habe nur diejenigen gesammelt, die in Spalte a des Rahmens nicht null sind(cframe['a']==frame.a.dropna())
bool(map(list,[cframe['a'],frame.a.dropna()])) #rahmen Sie die Listenfunktion ein['a']Und Rahmen.a.dropna()Bewerben Sie sich bei und prüfen Sie, ob sie gleich sind
'Windows' or Not?
import numpy as np
operating_system=np.where(cframe['a'].str.contains('Windows'),'Windows','Not Windows') #cframe['a']Aber'Windows'In True einschließlich der Zeichen'Windows'mit falsch'Not Windows'Gib es zurück
#` ['Windows' if 'Windows' in x else 'Not Windows' for x in cframe['a']]`Gleich wie
operating_system[:5]
operating_system Another Way
operating_system2=['Windows' if 'Windows' in x else 'Not Windows' for x in cframe['a']]
bool(list(operating_system)==operating_system2) #True
by_tz_os=cframe.groupby(['tz',operating_system])
agg_counts=by_tz_os.size().unstack().fillna(0)
agg_counts[:10]
#2016/07/28 22:56:30__
indexer=agg_counts.sum(1).argsort() #argsort()Np-Index nach dem Sortieren.Gibt im Array-Format zurück
#np.sum()Geben Sie grundsätzlich denjenigen zurück, der den gesamten Inhalt des Arrays hinzufügt
'''
# ABOUT np.sum()
>>> np.sum([[0, 1], [0, 5]], axis=0)
array([0, 6]) #return array([0+0],[1+5])
>>> np.sum([[0, 1], [0, 5]], axis=1)
array([1, 5]) #return array([0+1],[0+5])
'''
indexer[:10]
count_subset=agg_counts.take(indexer)[-10:] #Agg nur 10 Minuten vom Ende des Indexers_Rückgabe zählt(take=erhalten)
count_subset.plot(kind='barh', stacked=True)
# plt.show()
normed_subset=count_subset.div(count_subset.sum(1),axis=0)
normed_subset.plot(kind='barh',stacked=True)
# plt.show()
Recommended Posts