mongodb 수집에서 판다의 데이터 프레임으로 데이터를 로드하려면 어떻게 해야 합니까?
저는 팬더가 처음이지만 (음, 모든 "프로그래밍"에 대해서는...) 시도해보도록 격려받았습니다.저는 "tweets"라는 컬렉션이 있는 mongodb 데이터베이스 - "test"를 가지고 있습니다.ipython에서 데이터베이스에 액세스합니다.
import sys
import pymongo
from pymongo import Connection
connection = Connection()
db = connection.test
tweets = db.tweets
트윗에서 문서의 문서 구조는 다음과 같습니다.
entities': {u'hashtags': [],
u'symbols': [],
u'urls': [],
u'user_mentions': []},
u'favorite_count': 0,
u'favorited': False,
u'filter_level': u'medium',
u'geo': {u'coordinates': [placeholder coordinate, -placeholder coordinate], u'type': u'Point'},
u'id': 349223842700472320L,
u'id_str': u'349223842700472320',
u'in_reply_to_screen_name': None,
u'in_reply_to_status_id': None,
u'in_reply_to_status_id_str': None,
u'in_reply_to_user_id': None,
u'in_reply_to_user_id_str': None,
u'lang': u'en',
u'place': {u'attributes': {},
u'bounding_box': {u'coordinates': [[[placeholder coordinate, placeholder coordinate],
[-placeholder coordinate, placeholder coordinate],
[-placeholder coordinate, placeholder coordinate],
[-placeholder coordinate, placeholder coordinate]]],
u'type': u'Polygon'},
u'country': u'placeholder country',
u'country_code': u'example',
u'full_name': u'name, xx',
u'id': u'user id',
u'name': u'name',
u'place_type': u'city',
u'url': u'http://api.twitter.com/1/geo/id/1820d77fb3f65055.json'},
u'retweet_count': 0,
u'retweeted': False,
u'source': u'<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>',
u'text': u'example text',
u'truncated': False,
u'user': {u'contributors_enabled': False,
u'created_at': u'Sat Jan 22 13:42:59 +0000 2011',
u'default_profile': False,
u'default_profile_image': False,
u'description': u'example description',
u'favourites_count': 100,
u'follow_request_sent': None,
u'followers_count': 100,
u'following': None,
u'friends_count': 100,
u'geo_enabled': True,
u'id': placeholder_id,
u'id_str': u'placeholder_id',
u'is_translator': False,
u'lang': u'en',
u'listed_count': 0,
u'location': u'example place',
u'name': u'example name',
u'notifications': None,
u'profile_background_color': u'000000',
u'profile_background_image_url': u'http://a0.twimg.com/images/themes/theme19/bg.gif',
u'profile_background_image_url_https': u'https://si0.twimg.com/images/themes/theme19/bg.gif',
u'profile_background_tile': False,
u'profile_banner_url': u'https://pbs.twimg.com/profile_banners/241527685/1363314054',
u'profile_image_url': u'http://a0.twimg.com/profile_images/378800000038841219/8a71d0776da0c48dcc4ef6fee9f78880_normal.jpeg',
u'profile_image_url_https': u'https://si0.twimg.com/profile_images/378800000038841219/8a71d0776da0c48dcc4ef6fee9f78880_normal.jpeg',
u'profile_link_color': u'000000',
u'profile_sidebar_border_color': u'FFFFFF',
u'profile_sidebar_fill_color': u'000000',
u'profile_text_color': u'000000',
u'profile_use_background_image': False,
u'protected': False,
u'screen_name': placeholder screen_name',
u'statuses_count': xxxx,
u'time_zone': u'placeholder time_zone',
u'url': None,
u'utc_offset': -21600,
u'verified': False}}
제가 알기로는 판다의 주요 데이터 구조인 스프레드시트와 같은 표를 DataFrame이라고 합니다."트윗" 컬렉션의 데이터를 팬더의 데이터 프레임에 로드하려면 어떻게 해야 합니까?그리고 데이터베이스 내에서 하위 문서를 조회하려면 어떻게 해야 합니까?
MongoDB에서 얻은 커서를 DataFrame에 전달하기 전에 이해합니다.
import pandas as pd
df = pd.DataFrame(list(tweets.find()))
MongoDb에 다음과 같은 데이터가 있는 경우:
[
{
"name": "Adam",
"age": 27,
"address":{
"number": 4,
"street": "Main Road",
"city": "Oxford"
}
},
{
"name": "Steve",
"age": 32,
"address":{
"number": 78,
"street": "High Street",
"city": "Cambridge"
}
}
]
다음과 같이 데이터를 데이터 프레임에 직접 넣을 수 있습니다.
from pandas import DataFrame
df = DataFrame(list(db.collection_name.find({}))
그러면 다음과 같은 출력을 얻을 수 있습니다.
df.head()
| | name | age | address |
|----|---------|------|-----------------------------------------------------------|
| 1 | "Steve" | 27 | {"number": 4, "street": "Main Road", "city": "Oxford"} |
| 2 | "Adam" | 32 | {"number": 78, "street": "High St", "city": "Cambridge"} |
그러나 하위 문서는 하위 문서 셀 내부에 JSON으로 나타납니다.하위 문서 속성이 개별 셀로 표시되도록 개체를 평평하게 하려면 매개 변수 없이 json_noralize를 사용할 수 있습니다.
from pandas.io.json import json_normalize
datapoints = list(db.collection_name.find({})
df = json_normalize(datapoints)
df.head()
그러면 데이터 프레임의 형식이 다음과 같습니다.
| | name | age | address.number | address.street | address.city |
|----|--------|------|----------------|----------------|--------------|
| 1 | Thomas | 27 | 4 | "Main Road" | "Oxford" |
| 2 | Mary | 32 | 78 | "High St" | "Cambridge" |
이 코드를 사용하여 Panda DataFame에 MongoDB 데이터를 로드할 수 있습니다.저한테는 효과가 있어요.
import pymongo
import pandas as pd
from pymongo import Connection
connection = Connection()
db = connection.database_name
input_data = db.collection_name
data = pd.DataFrame(list(input_data.find()))
사용:
df=pd.DataFrame.from_dict(collection)
이것은 당신의 목표를 달성하기 위한 가장 간단한 기술입니다.
import pymongo import pandas as pd from pymongo import Connection conn = Connection() db = conn.your_database_name input_data = db.your_collection_name pandas_data_frame = pd.DataFrame(list(input_data.find())) print(pandas_data_frame)
언급URL : https://stackoverflow.com/questions/17805304/how-can-i-load-data-from-mongodb-collection-into-pandas-dataframe
'programing' 카테고리의 다른 글
데이터 테이블:행 이름 및 열 이름으로 항목 값을 가져오는 방법(VB) (0) | 2023.05.11 |
---|---|
npm이 프록시 뒤에서 작업할 수 있도록 설치(명령)하는 방법이 있습니까? (0) | 2023.05.11 |
VB란 무엇입니까?C# "var" 키워드에 해당하는 NET? (0) | 2023.05.11 |
FileNotFound 오류를 올바르게 발생시키는 방법은 무엇입니까? (0) | 2023.05.11 |
어떻게 하면 다른 디렉토리에서 npm을 시작할 수 있습니까? (0) | 2023.05.11 |