>백엔드 개발 >파이썬 튜토리얼 >Python 데이터 통계에 대한 몇 가지 팁 공유

Python 데이터 통계에 대한 몇 가지 팁 공유

WBOY
WBOY원래의
2016-08-04 08:55:431096검색

저는 최근 Python을 사용하여 데이터 통계를 수행하고 있습니다. 최근 사용하면서 발견하고 요약한 몇 가지 팁이 이 작업을 수행하는 일부 어린이에게 도움이 되기를 바랍니다. 일부 기술은 매우 일반적으로 사용되므로 일반적으로 주의를 기울이지 않지만 특정 시나리오에서는 이러한 작은 방법이 여전히 큰 도움을 줄 수 있습니다.

1. 키를 사전의 여러 값에 매핑

{'b': [4, 5, 6], 
'a': [1, 2, 3]}

때때로 동일한 키 값을 계산할 때 키를 키로 사용하여 사전에 동일한 키를 가진 모든 항목을 추가한 후 다양한 작업을 수행하려면 다음 코드를 사용하여 작업할 수 있습니다.

from collections import defaultdict
d = defaultdict(list)
print(d)
d['a'].append(1)
d['a'].append(2)
d['a'].append(3)
d['b'].append(4)
d['b'].append(5)
d['b'].append(6)
print(d)
print(d.get("a"))
print(d.keys())
print([d.get(i) for i in d])

여기에는 컬렉션의 메소드가 많이 사용됩니다. 계속해서 깊이 있게 이해해 보는 시간을 갖습니다.

위 코드를 실행한 결과:

defaultdict(, {})
defaultdict(, {'b': [4, 5, 6], 'a': [1, 2, 3]})
[1, 2, 3]
dict_keys(['b', 'a'])
[[4, 5, 6], [1, 2, 3]]

데이터를 채운 후 빠르게 그룹화한 다음 각 그룹을 순회하여 필요한 데이터의 일부를 계산하는 것과 같습니다.

2. 사전 키-값 쌍을 빠르게 변환

data = {...}
zip(data.values(), data.keys())

Data는 우리의 형식 데이터입니다. 빠른 키-값 변환을 위해 zip을 사용하고, 데이터 작업을 위해 max 및 min과 같은 함수를 사용할 수 있습니다.

3. 공통키로 사전 정렬

from operator import itemgetter
data = [
  {'name': "bran", "uid": 101},
  {'name': "xisi", "uid": 102},
  {'name': "land", "uid": 103}
]
print(sorted(data, key=itemgetter("name")))
print(sorted(data, key=itemgetter("uid")))

데이터 형식은 데이터입니다. 이름이나 uid를 정렬하려면 코드에 있는 메서드를 사용합니다.
실행 결과:

[{'name': 'bran', 'uid': 101}, {'name': 'land', 'uid': 103}, {'name': 'xisi', 'uid': 102}]
[{'name': 'bran', 'uid': 101}, {'name': 'xisi', 'uid': 102}, {'name': 'land', 'uid': 103}]

예상대로

4. 여러 사전을 특정 분야에 따라 그룹화합니다

그룹화하기 전에 먼저 데이터를 정렬해야 합니다. 정렬 필드는 실제 요구 사항에 따라 선택됩니다.

처리할 데이터:

rows = [
  {'name': "bran", "uid": 101, "class": 13},
  {'name': "xisi", "uid": 101, "class": 11},
  {'name': "land", "uid": 103, "class": 10}
]

예상 처리 결과 :

{
101: [{'name': 'xisi', 'class': 11, 'uid': 101},{'name': 'bran', 'class': 13, 'uid': 101}],
103: [{'name': 'land', 'class': 10, 'uid': 103}]
}

우리는 uid에 따라 그룹화합니다. 이것은 단지 데모일 뿐이며 uid는 일반적으로 반복되지 않습니다.

좀 더 복잡합니다. 단계별로 살펴보겠습니다

some = [('a', [1, 2, 3]), ('b', [4, 5, 6])]
print(dict(some))

결과:

{'b': [4, 5, 6], 'a': [1, 2, 3]}

여기서 우리의 목적은 튜플을 사전으로 변환하는 것입니다. 이는 매우 간단하며 모두가 이해해야 합니다. 그런 다음 처리할 데이터를 정렬하는 다음 단계를 수행해 보겠습니다.

data_one = sorted(rows, key=itemgetter("class"))
print(data_one)
data_two = sorted(rows, key=lambda x: (x["uid"], x["class"]))
print(data_two)

여기에서는 동일한 원리이지만 스타일이 약간 다른 두 가지 정렬 방법을 제공합니다. 첫 번째 data_one은 이전에 사용한 것처럼 특정 필드별로 직접 정렬할 수 있지만 때로는 다른 방법도 있습니다. 요청:

먼저 특정 필드를 기준으로 정렬한 다음 첫 번째 필드가 반복되면 다른 필드를 기준으로 정렬합니다.

이번에는 다중 필드 값을 정렬하는 두 번째 방법을 사용하겠습니다.
정렬 결과는 다음과 같습니다.

[{'name': 'land', 'class': 10, 'uid': 103}, {'name': 'xisi', 'class': 11, 'uid': 101}, {'name': 'bran', 'class': 13, 'uid': 101}]
[{'name': 'xisi', 'class': 11, 'uid': 101}, {'name': 'bran', 'class': 13, 'uid': 101}, {'name': 'land', 'class': 10, 'uid': 103}]

결과를 천천히 살펴보면 여전히 약간의 차이가 있습니다.

그런 다음 방금 설명한 두 가지 방법을 결합하는 마지막 단계가 나옵니다.

data = dict([(g, list(k)) for g, k in groupby(data_two, key=lambda x: x["uid"])])
print(data)

정렬된 데이터를 그룹화한 다음 튜플 목록을 생성하고 마지막으로 이를 사전으로 변환합니다. 이제 데이터를 성공적으로 그룹화했습니다.

파이썬 데이터 통계에 대한 몇 가지 팁이 여기에 공유되어 있습니다. 필요한 경우 참조할 수 있습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.