【发布时间】:2014-05-13 18:09:02
【问题描述】:
我遇到了一些问题,试图在我的 Python 编辑器中加载一个 JSON 文件,以便我可以对其中的数据进行一些分析。
JSON 文件位于以下文件夹中:'C:\Users\Admin\JSON files\file1.JSON'
它包含以下推文数据(这只是一条记录,那里有数百条):
{
"created": "Fri Mar 13 18:09:33 GMT 2014",
"description": "Tweeting the latest Playstation news!",
"favourites_count": 4514,
"followers": 235,
"following": 1345,
"geo_lat": null,
"geo_long": null,
"hashtags": "",
"id": 2144411414,
"is_retweet": false,
"is_truncated": false,
"lang": "en",
"location": "",
"media_urls": "",
"mentions": "",
"name": "Playstation News",
"original_text": null,
"reply_status_id": 0,
"reply_user_id": 0,
"retweet_count": 4514,
"retweet_id": 0,
"score": 0.0,
"screen_name": "SevenPS4",
"source": "<a href=\"http://twitterfeed.com\" rel=\"nofollow\">twitterfeed</a>",
"text": "tweetinfohere",
"timezone": "Amsterdam",
"url": null,
"urls": "http://bit.ly/1lcbBW6",
"user_created": "2013-05-19",
"user_id": 13313,
"utc_offset": 3600
}
我正在使用以下代码来尝试测试这些数据:
import json
import pandas as pa
z = pa.read_json('C:\Users\Admin\JSON files\file1.JSON')
d = pa.DataFrame.from_dict([{k:v} for k,v in z.iteritems() if k in ["retweet_count", "user_id", "is_retweet"]])
print d.retweet_count.sum()
当我运行它时,它会成功读取 JSON 文件,然后打印出 retweet_count 的列表,如下所示:
0, 4514
1, 300
2, 450
3, 139 等等等等
我的问题: 我如何真正总结所有 retweet_count/user_id 值,而不是像上面显示的那样列出它们?
然后如何将此总和除以条目数以获得平均值?
如何选择 JSON 数据的样本大小而不是全部使用? (我以为是 d.iloc[:10] 但这不起作用)
使用 JSON 文件中的“is_retweet”字段,是否可以计算给出的假/真数量? JSON 文件中的 IE,我想要转发的推文数量和未转发的推文数量。
提前谢谢,是的,我对此很陌生..
z.info() 给出:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 506 entries, 0 to 505
Data columns (total 31 columns):
created 506 non-null object
description 506 non-null object
favourites_count 506 non-null int64
followers 506 non-null int64
following 506 non-null int64
geo_lat 10 non-null float64
geo_long 10 non-null float64
hashtags 506 non-null object
id 506 non-null int64
is_retweet 506 non-null bool
is_truncated 506 non-null bool
lang 506 non-null object
location 506 non-null object
media_urls 506 non-null object
mentions 506 non-null object
name 506 non-null object
original_text 172 non-null object
reply_status_id 506 non-null int64
reply_user_id 506 non-null int64
retweet_id 506 non-null int64
retweet_count 506 non_null int64
score 506 non-null int64
screen_name 506 non-null object
source 506 non-null object
status_count 506 non-null int64
text 506 non-null object
timezone 415 non-null object
url 273 non-null object
urls 506 non-null object
user_created 506 non-null object
user_id 506 non-null int64
utc_offset 506 non-null int64
dtypes: bool(2), float64(2), int64(11), object(16)
当我运行 d.info() 时,它为什么将 retweet_count 和 user_id 显示为对象?
【问题讨论】:
-
df.info() 将列显示为非空对象,当我假设它们必须是值时,对吧?如何将它们更改为值而不是对象?
<class 'pandas.core.frame.DataFrame'> Int64Index: 2 entries, 0 to 1 Data columns (total 2 columns): retweet_count 1 non-null object user_id 1 non-null object dtypes: object(2) -
z的数据类型是什么? -
在底部查看我的编辑@myacobucci
-
不完全确定,老实说,我以前从未使用过 pandas,我只是快速浏览了文档以了解您使用的方法和类以了解它们。抛出
int(retweet_count_value)应该将它们更改为整数而不会出现问题。 -
抱歉,那条线在哪里?
标签: python json pandas analysis