일부 로그를 처리하기 위해 pandas를 사용하고 있습니다. 기본적으로 다음 시계열로 처리했습니다.
time
2014-03-18 17:00:25.266462 rt/top_rt
2014-03-18 17:00:25.722639 follow/retweeted
2014-03-18 17:00:26.773057 rt/top_rt
2014-03-18 17:00:28.077047 rt/top_rt
2014-03-18 17:00:28.904139 rt/top_rt
2014-03-18 17:00:29.512671 rt/top_rt
2014-03-18 17:00:29.640878 follow/retweeted
2014-03-18 21:00:30.087161 rt/top_rt
2014-03-18 21:00:30.272342 follow/retweeted
2014-03-18 21:00:31.284734 rt/top_rt
2014-03-18 21:00:31.467828 follow/retweeted
2014-03-18 21:00:33.955612 rt/top_rt
2014-03-18 21:00:35.810813 rt/top_rt
2014-03-18 21:00:37.710910 rt/top_rt
2014-03-18 21:00:38.200717 rt/top_rt
...
로그 카테고리와 그룹을 일별로 피벗하고 싶습니다. 그래서 나는 다음과 같은 것을 얻고 싶습니다.
day rt/top_rt follow/retweeted ...
2014-03-18 35 45
2014-03-19 67 90
2014-03-19 67 90
...
이 몇 가지 옵션 (당신이 그것을 할 수는 df.pivot
, df.pivot_table
, df.groupby
, df.unstack
)하지만, 사용이 crosstab
간단 하나 (이 계산을 보인다 기본적으로 주파수, http://pandas.pydata.org/pandas-docs/stable/generated/pandas.crosstab .html ) :
pd.crosstab(rows=dates, cols=log)
df
DatetimeIndex 가있는 DataFrame 및 column 이 있다고 가정하면 다음을 log
수행 할 수 있습니다.
pd.crosstab(rows=df.index.date, cols=df['log'])
구체적인 예 :
In [230]: s = """2014-03-18 17:00:25.266462, rt/top_rt
...: 2014-03-18 17:00:25.722639, follow/retweeted
...: 2014-03-18 17:00:26.773057, rt/top_rt
...: 2014-03-18 17:00:28.077047, rt/top_rt
...: 2014-03-18 17:00:28.904139, rt/top_rt
...: 2014-03-18 17:00:29.512671, rt/top_rt
...: 2014-03-18 17:00:29.640878, follow/retweeted
...: 2014-03-18 21:00:30.087161, rt/top_rt
...: 2014-03-18 21:00:30.272342, follow/retweeted
...: 2014-03-18 21:00:31.284734, rt/top_rt
...: 2014-03-18 21:00:31.467828, follow/retweeted
...: 2014-03-19 21:00:33.955612, rt/top_rt
...: 2014-03-19 21:00:35.810813, rt/top_rt
...: 2014-03-19 21:00:37.710910, rt/top_rt
...: 2014-03-19 21:00:38.200717, rt/top_rt"""
In [231]: df = pd.read_csv(StringIO(s), sep=",", header=None, index_col=0, names=['time', 'log'],
...: skipinitialspace=True, parse_dates=True)
In [232]: df
Out[232]:
log
time
2014-03-18 17:00:25.266462 rt/top_rt
2014-03-18 17:00:25.722639 follow/retweeted
2014-03-18 17:00:26.773057 rt/top_rt
2014-03-18 17:00:28.077047 rt/top_rt
2014-03-18 17:00:28.904139 rt/top_rt
2014-03-18 17:00:29.512671 rt/top_rt
2014-03-18 17:00:29.640878 follow/retweeted
2014-03-18 21:00:30.087161 rt/top_rt
2014-03-18 21:00:30.272342 follow/retweeted
2014-03-18 21:00:31.284734 rt/top_rt
2014-03-18 21:00:31.467828 follow/retweeted
2014-03-19 21:00:33.955612 rt/top_rt
2014-03-19 21:00:35.810813 rt/top_rt
2014-03-19 21:00:37.710910 rt/top_rt
2014-03-19 21:00:38.200717 rt/top_rt
In [233]: pd.crosstab(df.index.date, df['log'])
Out[233]:
log follow/retweeted rt/top_rt
row_0
2014-03-18 4 7
2014-03-19 0 4
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다