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 을 배 워 서 지금까지 받 은 첫 번 째 목록 입 니 다.이 수 요 는 비교적 간단 하 다 고 할 수 밖 에 없습니다.하지만 저 는 이 임 무 를 완성 하 는 과정 에서 예전 에 제 가 잘 몰 랐 던 것들 을 배 웠 습 니 다.그리고 프로 그래 밍 기술 도 능숙 하 게 익 혔 습 니 다.비록 이런 비교적 간단 한 일 은 보수 가 그리 높 지 않 을 것 이 라 고 말 하지만,나 는 이 과정 에서 많은 것 을 배 웠 고,동시에 많이 성장 했다 고 생각한다.그래서 아무래도 사실은 괜찮다.
파 이 썬 데이터 분석 복권 의 역사 데이터 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 분석 복권 데이터 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기