#19 - 파이썬 기초 실습 -Random Choice

2020. 1. 30. 07:54AI & BigData/Python Basics

파이썬 기초 실습 - Random Choice

  • 아이디 또는 문장? 이름 이 변수에 저장 되어 있을때..
  • 이값중에서 랜덤으로 선택하여 출력해줍니다.

In [1]:

import pandas as pd

In [2]:

참가자_리스트 = []
for i in range(10):
    참가자_리스트.append(f"2020011{i},참가자{i},좋아요")

In [3]:

참가자_리스트

Out[3]:

['20200110,참가자0,좋아요',
 '20200111,참가자1,좋아요',
 '20200112,참가자2,좋아요',
 '20200113,참가자3,좋아요',
 '20200114,참가자4,좋아요',
 '20200115,참가자5,좋아요',
 '20200116,참가자6,좋아요',
 '20200117,참가자7,좋아요',
 '20200118,참가자8,좋아요',
 '20200119,참가자9,좋아요']

In [4]:

df = pd.DataFrame(data=참가자_리스트)

In [5]:

df

Out[5]:

  0
0 20200110,참가자0,좋아요
1 20200111,참가자1,좋아요
2 20200112,참가자2,좋아요
3 20200113,참가자3,좋아요
4 20200114,참가자4,좋아요
5 20200115,참가자5,좋아요
6 20200116,참가자6,좋아요
7 20200117,참가자7,좋아요
8 20200118,참가자8,좋아요
9 20200119,참가자9,좋아요

In [6]:

df.to_csv('part_list.csv',encoding='ms949',columns=None,header=False)

In [7]:

entries = []
with open("part_list.csv") as f:
    for line in f:
        print(line)
0,"20200110,참가자0,좋아요"

1,"20200111,참가자1,좋아요"

2,"20200112,참가자2,좋아요"

3,"20200113,참가자3,좋아요"

4,"20200114,참가자4,좋아요"

5,"20200115,참가자5,좋아요"

6,"20200116,참가자6,좋아요"

7,"20200117,참가자7,좋아요"

8,"20200118,참가자8,좋아요"

9,"20200119,참가자9,좋아요"

In [8]:

entries = []
with open("part_list.csv") as f:   # 판다스를 이용하면 편한것이 많이 있는데..
    for line in f:                 # 파일을 이렇게 직접 읽으면 작업 할게 많아요..
        num, timestamp, name, comment = line.split(",")
        entries.append({
            "timestamp":timestamp,
            "name":name,
            "comment":comment,
        })

print(" 전체 참가자 " + str(len(entries)))
 전체 참가자 10

In [9]:

for e in entries:
    print(e["name"])
참가자0
참가자1
참가자2
참가자3
참가자4
참가자5
참가자6
참가자7
참가자8
참가자9

In [10]:

import random
import time

In [11]:

random.sample(population=[2,5,7,8,9], k = 3)

Out[11]:

[7, 8, 5]

In [12]:

uniq_entries = []
used_names = set()
for e in entries:
    if e["name"] not in used_names:
        used_names.add(e["name"])
        uniq_entries.append(e)

print(len(uniq_entries))

choice = random.sample(uniq_entries, 4)
with open("choice.txt","w+") as f2:
    for winner in choice:
        f2.write("%s\t%s\t%s\t" % (winner["timestamp"],winner["name"],winner["comment"]))
10

In [13]:

for i, w in enumerate(choice):
    time.sleep(0.5)
    print("%s님, 축하드립니다!!" % i,w["name"])
0님, 축하드립니다!! 참가자4
1님, 축하드립니다!! 참가자6
2님, 축하드립니다!! 참가자5
3님, 축하드립니다!! 참가자9

In [14]:

df

Out[14]:

  0
0 20200110,참가자0,좋아요
1 20200111,참가자1,좋아요
2 20200112,참가자2,좋아요
3 20200113,참가자3,좋아요
4 20200114,참가자4,좋아요
5 20200115,참가자5,좋아요
6 20200116,참가자6,좋아요
7 20200117,참가자7,좋아요
8 20200118,참가자8,좋아요
9 20200119,참가자9,좋아요

In [15]:

# data frame 에서 일부 랜덤 하게 추출할수 있음.
df.sample(4)

Out[15]:

  0
5 20200115,참가자5,좋아요
2 20200112,참가자2,좋아요
3 20200113,참가자3,좋아요
6 20200116,참가자6,좋아요

In [ ]: