저는 최근 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)
정렬된 데이터를 그룹화한 다음 튜플 목록을 생성하고 마지막으로 이를 사전으로 변환합니다. 이제 데이터를 성공적으로 그룹화했습니다.
파이썬 데이터 통계에 대한 몇 가지 팁이 여기에 공유되어 있습니다. 필요한 경우 참조할 수 있습니다.