Python 데이터 분석의 복권 역사 데이터
이 수 요 는 주로 복권 의 역사 데 이 터 를 분석 하 는 것 이다.
고객 의 수 요 는 복권 의 전 2 기 상황 에 따라 어떤 비스듬 한 두 숫자 가 같다 면 3 기의 같은 위치 에 있 는 복권 을 사 는 것 이다.
1.똑 같은 숫자 가 1-5 라면 6-10 을 사고 똑 같은 숫자 가 6-10 이면 1-5 를 삽 니 다.
2 에 대해 같은 숫자 가 1-5 라면 1-5 를 사고 같은 숫자 가 6-10 이면 6-10 을 삽 니 다.
그 다음 에 이 방안 에 따라 구 매 할 수 있 지만 구 매 하지 못 할 수도 있 습 니 다.그래서 고객 들 은 제 가 100 일 동안 이런 방법 으로 6 번 과 6 번 이상 복권 을 구 매해 야 한 번 의 상 을 명중 시 킬 수 있 는 횟수 와 해당 하 는 시간 을 통계 할 수 있 기 를 바 랍 니 다.이 사례 에 대해 저 희 는 상세 하 게 분석 하 겠 습 니 다.
2.데이터 분석
(여기 서 우 리 는 먼저 Jupyter Notebook 을 이용 하여 분석 한 다음 에 성 과 를 얻 은 후에 Pycharm 을 이용 하여 완전한 프로 그래 밍 을 한다.)
2.1 하루 데이터 가 져 오기
아래 그림 과 같은 인 터 페 이 스 를 열 면 사이트 주소 와 요청 헤드 를 얻 을 수 있 습 니 다.
사이트 주소(역사 데이터 의 사이트 주소)
요청 헤더
그리고 우 리 는 프로그램 에서 코드 를 작성 하여 데 이 터 를 가 져 옵 니 다.
그리고 일정한 예비 처 리 를 한다.
2.2 하루 데이터 분석 시작
여기 서 우 리 는 코드 를 직접 보 여 줍 니 다.
def reverse_list(lst):
"""
:param lst:
:return:
"""
return [ele for ele in reversed(lst)]
low_list = ["01", "02", "03", "04", "05"]
#
high_list = ["06", "07", "08", "09", "10"]
#
N = 0
# N
n = 0
# n
record_number = 1
#
list_data_number = []
#
dict_time_record = {}
#
for k in range(1152):
#
if k < 1150:
new_result1 = reverse_list(new_response["result"]["data"])[k]
#
new_result2 = reverse_list(new_response["result"]["data"])[k + 1]
#
new_result3 = reverse_list(new_response["result"]["data"])[k + 2]
#
data1 = new_result1['preDrawCode'].split(',')
#
data2 = new_result2['preDrawCode'].split(',')
#
data3 = new_result3['preDrawCode'].split(',')
#
for m in range(10):
# ,
if m == 0:
if data2[0] == data1[1]:
#
N += 1
#
if (data2[0] in low_list and data3[0] in low_list) or (data2[0] in high_list and data3[0] in high_list):
n += 1
#
# , ,
list_data_number.append(record_number)
if f"{record_number}" in dict_time_record.keys():
# ,
dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])
else:
# , , ,
dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]
record_number = 1
#
else:
record_number += 1
# ,
break
#
elif m == 9:
#
if data2[9] == data1[8]:
#
N += 1
if (data2[9] in low_list and data3[9] in low_list) or (data2[9] in high_list and data3[9] in high_list):
n += 1
list_data_number.append(record_number)
if f"{record_number}" in dict_time_record.keys():
dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])
else:
dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]
record_number = 1
else:
record_number += 1
break
else:
#
if data2[m] == data1[m + 1] or data2[m] == data1[m - 1]:
#
N += 1
if (data2[m] in low_list and data3[m] in low_list) or (data2[m] in high_list and data3[m] in high_list):
n += 1
list_data_number.append(record_number)
if f"{record_number}" in dict_time_record.keys():
dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])
else:
dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]
record_number = 1
else:
record_number += 1
break
print(f" :{new_response['result']['data'][0]['preDrawTime'][:10]}, {N} , {n} , {N - n} ")
# , , , ,
list_data_number.sort()
#
dict_record = {}
#
for i in list_data_number:
if f"{i}" in dict_record.keys(): # ?
dict_record[f"{i}"] += 1
# ,
else: # , 1
dict_record[f"{i}"] = 1
# , 1
for j in dict_record.keys():
if (int(j) >= 6) and (int(j) < 15):
# , 6 , 15 ,
print(f" {j} {dict_record[j]}")
#
print(dict_time_record[j])
str0 = ""
for letter in dict_time_record[j]:
str0 += letter
str0 += ", "
print(str0)
#
실행 결 과 는 다음 그림 과 같 습 니 다.2.3 여러 날 동안 반복 되 는 데이터 분석:
먼저 이벤트 목록 을 설정 하여 어떤 날 의 데 이 터 를 집계 해 야 하 는 지 기록 합 니 다.
코드:
data_list = []
for h in range(31):
data_list.append(f'1-{h + 1}')
for h in range(28):
data_list.append(f'2-{h + 1}')
for h in range(31):
data_list.append(f'3-{h + 1}')
for h in range(20):
data_list.append(f'4-{h + 1}')
상기 코드 를 통 해 우 리 는 시간 목록 의 설정 을 실현 한 다음 에 우 리 는 이 목록 을 반복 해서 서로 다른 날짜 의 복권 데 이 터 를 방문 한 다음 에 서로 다른 시간의 데 이 터 를 얻 은 다음 에 상기 분석 방법 을 이용 하여 데이터 분석 을 한다.즉,며칠 동안 의 복권 데이터 분석 결 과 를 얻 을 수 있다.2.4 데 이 터 를 Excel 표 에 기록 합 니 다.
여기 서 우 리 는 xlwt 모듈 을 이용 하여 엑셀 표 의 기록 작업 을 할 수 있 습 니 다.구체 적 인 기록 은 너무 군말 할 필요 가 없습니다.
3.전체 코드
다음은 완전한 코드 입 니 다.
import requests
import chardet
import json
import xlwt # excel
def reverse_list(lst):
"""
:param lst:
:return:
"""
return [ele for ele in reversed(lst)]
data_list = []
for h in range(31):
data_list.append(f'1-{h + 1}')
for h in range(28):
data_list.append(f'2-{h + 1}')
for h in range(31):
data_list.append(f'3-{h + 1}')
for h in range(20):
data_list.append(f'4-{h + 1}')
wb = xlwt.Workbook() # excel
sh = wb.add_sheet(' ') #
sh.write(0, 0, " ")
sh.write(0, 1, " ")
sh.write(0, 2, " ")
sh.write(0, 3, " ")
sh.write(0, 4, "6 ")
sh.write(0, 5, "6 ")
sh.write(0, 6, "7 ")
sh.write(0, 7, "7 ")
sh.write(0, 8, "8 ")
sh.write(0, 9, "8 ")
sh.write(0, 10, "9 ")
sh.write(0, 11, "9 ")
sh.write(0, 12, "10 ")
sh.write(0, 13, "10 ")
sh.write(0, 14, "11 ")
sh.write(0, 15, "11 ")
sh.write(0, 16, "12 ")
sh.write(0, 17, "12 ")
sh.write(0, 18, "13 ")
sh.write(0, 19, "13 ")
sh.write(0, 20, "14 ")
sh.write(0, 21, "14 ")
# wb.save('test4.xls')
sheet_seek_position = 1
# 1
for data in data_list:
low_list = ["01", "02", "03", "04", "05"]
high_list = ["06", "07", "08", "09", "10"]
N = 0
n = 0
url = f'https://api.api68.com/pks/getPksHistoryList.do?date=2021-{data}&lotCode=10037'
headers = {
'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/90.0.4430.72 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
response.encoding = chardet.detect(response.content)['encoding']
new_response = json.loads(response.text)
sh.write(sheet_seek_position, 0, new_response['result']['data'][0]['preDrawTime'][:10])
# , :data
record_number = 1 # , ,
list_data_number = []
#
dict_time_record = {}
for k in range(1152):
# record_number = 1,
# ,
if k < 1150:
new_result1 = reverse_list(new_response["result"]["data"])[k]
new_result2 = reverse_list(new_response["result"]["data"])[k + 1]
new_result3 = reverse_list(new_response["result"]["data"])[k + 2]
data1 = new_result1['preDrawCode'].split(',')
data2 = new_result2['preDrawCode'].split(',')
data3 = new_result3['preDrawCode'].split(',')
for m in range(10):
if m == 0:
if data2[0] == data1[1]:
N += 1
if (data2[0] in low_list and data3[0] in high_list) or (data2[0] in high_list and data3[0] in low_list):
n += 1
# , ,
list_data_number.append(record_number)
if f"{record_number}" in dict_time_record.keys():
dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])
else:
dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]
# print(record_number)
record_number = 1 #
else:
record_number += 1 # ,
#
break
elif m == 9:
if data2[9] == data1[8]:
N += 1
if (data2[9] in low_list and data3[9] in high_list) or (data2[9] in high_list and data3[9] in low_list):
n += 1
list_data_number.append(record_number)
if f"{record_number}" in dict_time_record.keys():
dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])
else:
dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]
# print(record_number)
record_number = 1
else:
record_number += 1
break
else:
if data2[m] == data1[m + 1] or data2[m] == data1[m - 1]:
N += 1
if (data2[m] in low_list and data3[m] in high_list) or (data2[m] in high_list and data3[m] in low_list):
n += 1
list_data_number.append(record_number)
if f"{record_number}" in dict_time_record.keys():
dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])
else:
dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]
# print(record_number)
record_number = 1
else:
record_number += 1
break
print(f" :{new_response['result']['data'][0]['preDrawTime'][:10]}, {N} , {n} , {N - n} ")
sh.write(sheet_seek_position, 1, N)
sh.write(sheet_seek_position, 2, n)
sh.write(sheet_seek_position, 3, N - n)
# new_list_data_number = list_data_number.sort()
list_data_number.sort()
#
dict_record = {}
#
for i in list_data_number:
if f"{i}" in dict_record.keys(): # ?
dict_record[f"{i}"] += 1
# ,
else: # , 1
dict_record[f"{i}"] = 1
# , 1
# print(dict_record)
# print(f" ?")
# print(f" :")
for j in dict_record.keys():
if (int(j) >= 6) and (int(j) < 15):
print(f" {j} {dict_record[j]}")
print(dict_time_record[j])
str0 = ""
for letter in dict_time_record[j]:
str0 += letter
str0 += ", "
print(str0)
sh.write(sheet_seek_position, 4 + (int(j) - 6) * 2, dict_record[j])
#
sh.write(sheet_seek_position, 4 + (int(j) - 6) * 2 + 1, str0[:-2])
# -2
#
# print(j)
sheet_seek_position += 1
# , , ,
#
wb.save(' .xls')
4.운행 결과전시 1,
전시 2,
그래서 우 리 는 초고 속 비행선 의 복권 데이터 분석 을 해결 했다.
그 다음 에 우 리 는 알고리즘 을 조금 만 바 꾸 면 된다.다른 부분 은 똑 같 아서 과속 경주 의 데이터 분석 을 실현 할 수 있다.
수 정 된 코드 는 아래 에 열거 되 어 있다.
for m in range(10):
if m == 0:
if data2[0] == data1[1]:
N += 1
if (data2[0] in low_list and data3[0] in low_list) or (data2[0] in high_list and data3[0] in high_list):
n += 1
# , ,
list_data_number.append(record_number)
if f"{record_number}" in dict_time_record.keys():
dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])
else:
dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]
# print(record_number)
record_number = 1 #
else:
record_number += 1 # ,
#
break
elif m == 9:
if data2[9] == data1[8]:
N += 1
if (data2[9] in low_list and data3[9] in low_list) or (data2[9] in high_list and data3[9] in high_list):
n += 1
list_data_number.append(record_number)
if f"{record_number}" in dict_time_record.keys():
dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])
else:
dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]
# print(record_number)
record_number = 1
else:
record_number += 1
break
else:
if data2[m] == data1[m + 1] or data2[m] == data1[m - 1]:
N += 1
if (data2[m] in low_list and data3[m] in low_list) or (data2[m] in high_list and data3[m] in high_list):
n += 1
list_data_number.append(record_number)
if f"{record_number}" in dict_time_record.keys():
dict_time_record[f"{record_number}"].append(new_result3['preDrawTime'][11:])
else:
dict_time_record[f"{record_number}"] = [new_result3['preDrawTime'][11:]]
# print(record_number)
record_number = 1
else:
record_number += 1
break
총화한 마디 로 하면 이것 이 바로 제 가 Python 을 배 워 서 지금까지 받 은 첫 번 째 목록 입 니 다.이 수 요 는 비교적 간단 하 다 고 할 수 밖 에 없습니다.하지만 저 는 이 임 무 를 완성 하 는 과정 에서 예전 에 제 가 잘 몰 랐 던 것들 을 배 웠 습 니 다.그리고 프로 그래 밍 기술 도 능숙 하 게 익 혔 습 니 다.비록 이런 비교적 간단 한 일 은 보수 가 그리 높 지 않 을 것 이 라 고 말 하지만,나 는 이 과정 에서 많은 것 을 배 웠 고,동시에 많이 성장 했다 고 생각한다.그래서 아무래도 사실은 괜찮다.
파 이 썬 데이터 분석 복권 의 역사 데이터 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 분석 복권 데이터 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.