我应该分析csv文件中的数据。我需要可视化和打印:
如何使用此数据分别对2014年和2015年进行第一次(网站流量图表):
address used_at
am.ru 2014 413071
2015 183402
auto.ru 2014 9122342
2015 6923367
avito.ru 2014 84503151
2015 87688571
avtomarket.ru 2014 106849
2015 95927
cars.mail.ru/sale 2014 211456
2015 167278
drom.ru 2014 11014955
2015 9704124
e1.ru 2014 28678357
2015 27961857
irr.ru/cars 2014 222193
2015 133678
答案 0 :(得分:3)
我已经生成了样本输入数据(3个网站,时间跨度:2年,100,000个条目),因为您没有提供。
代码:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('avito_trend.csv', parse_dates=['ts'], usecols=['userid','site','ts','duration'])
print('Time spent online per web site')
print(df.groupby('site').agg({'duration': 'sum'}))
print('Time spent online per web site, per year')
print(df.groupby([df.ts.dt.year, 'site']).agg({'duration': 'sum'}))
# calculating stats
stats = df.groupby([df.ts.dt.year, 'site'], sort=True)['userid'] \
.count() \
.reset_index() \
.rename(columns={'userid':'visits'}) \
stats = stats.set_index(stats.ts.astype(str) + ': ' + stats.site) \
.drop(['ts','site'], axis=1)
# plot part
fig = plt.figure(figsize=(16,9))
ax = fig.add_subplot(111)
title = 'site statistics (visitors)'
stats.plot(kind='barh', ax=ax, title=title, color=['grey'], legend=None)
[ax.annotate(str(visits), (stats.values.max()/2, i))
for i, visits in enumerate(stats['visits'].tolist())]
plt.show()
fig.savefig('stats.png',dpi=100,bbox='Tight')
输出:
Time spent online per web site
duration
site
aliexpress.com 16603827
avito.ru 16560223
rozetka.ua 16731197
Time spent online per web site, per year
duration
ts site
2014 aliexpress.com 8242863
avito.ru 8288967
rozetka.ua 8392353
2015 aliexpress.com 8360964
avito.ru 8271256
rozetka.ua 8338844
PS请始终提供样本输入(5-10行)和预期输出(基于样本数据)
答案 1 :(得分:1)
如果您只想在csv中可视化和打印行,则以下代码应该可以正常工作。
table = []
with open('avito_trend.csv') as fin:
reader = csv.reader(fin)
for row in reader:
table.append(row)
print(table)
答案 2 :(得分:0)
你需要包含你使用的csv文件的样子,如果我不知道我在引用什么,就无法帮助。
作为提示,您可以使用pandas read_csv方法,而不必使用csv。
ex:infile=pd.read_csv("avito_trend.csv")