使用python进行CSV数据分析[关闭]

Posted

技术标签:

【中文标题】使用python进行CSV数据分析[关闭]【英文标题】:CSV data analysis with python [closed] 【发布时间】:2016-07-04 11:18:48 【问题描述】:

我应该分析 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

【问题讨论】:

可以加Minimal, Complete, and Verifiable example吗? 假设你提供的数据在df数据框:df.plot(kind='barh') 【参考方案1】:

我生成了示例输入数据(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 行)和预期输出(基于示例数据)

【讨论】:

如果我需要分别打印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 @ldevyataykina,您应该使用预期输出示例更新您的问题【参考方案2】:

如果您只想可视化和打印 csv 中的行,那么下面的代码应该可以工作。

table = []
with open('avito_trend.csv') as fin:
    reader = csv.reader(fin)
    for row in reader:
        table.append(row)
print(table)

【讨论】:

【参考方案3】:

您需要包含您使用的 csv 文件的外观,如果我不知道我在引用什么,将无济于事。

作为提示,您可以使用 pandas read_csv 方法,而完全不必使用 csv。

例如:infile=pd.read_csv("avito_trend.csv")

【讨论】:

我使用带有 498430 个字符串的 csv 文件。它们看起来都像 dc2829da4d79ad3f5549588471f0d534,"avito.ru",2014-11-26 22:35:08,132,7。 1 - 用户 ID; 2 - 网站; 3 - 访问数据; 4 - 网站在线时间,5 - 不重要 你在哪里卡住了?您提出一些重大问题,您应该启动一些代码,或者将项目分解为更易于管理的任务.. 我需要按访问年份分组。但我的日期格式为 2014-11-26 22:35:08,但我不知道我可以这样做

以上是关于使用python进行CSV数据分析[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中预测我的 .csv 数据的最佳方法 [关闭]

在python中处理几个大的csv [关闭]

python 处理CSV数据

在 python 中使用 csv.DictReader 进行数据类型转换的最快方法

如何在目录中的所有 csvs 文件中进行 python 关键字搜索和单词计数器并写入单个 csv? [关闭]

在 csv 文件中的所有行组合中应用字符串匹配逻辑 [关闭]