In [1]:
import pandas as pd # 관례적으로, pandas 를 pd라는 이름으로 import 한다.
파이썬 배울 때 순서
Pandas 배울 때 순서 => Pandas스러운 방법으로 개발
In [2]:
# Matrix ( 2차원 행렬; Column x Row )
pd.DataFrame()
Out[2]:
In [3]:
# List, = Row나 Column 그 자체
pd.Series()
Out[3]:
In [5]:
animals = ["dog", "cat", "iguana"]
animals
Out[5]:
In [6]:
len(animals)
Out[6]:
In [7]:
animals_series = pd.Series(["dog", "cat", "iguana"])
In [8]:
animals_series
Out[8]:
In [9]:
len(animals_series)
Out[9]:
In [17]:
name_series = pd.Series(["김기표", "고기표", "이기표"])
# List <=> Series, 하지만 여러분은 가능하면 Series 만 사용하자.
In [18]:
name_series[0:2]
Out[18]:
In [19]:
list(name_series)
Out[19]:
In [20]:
email_series = pd.Series(["kimkipoy@gmail.com", "kkp@naver.com", "kp@hanmail.net"])
In [21]:
name_series
Out[21]:
In [22]:
email_series
Out[22]:
In [23]:
type(email_series)
Out[23]:
In [24]:
# Column => Name, Email
df = pd.DataFrame({"Name": name_series, "Email": email_series})
df
Out[24]:
In [25]:
# Column 을 기준으로 ( 지금은 하나의 Column 이 하나의 Series ) => Series 라고 보고 있다.
In [26]:
df.loc[0] # Row 를 Series 로 보고 있다.
Out[26]:
In [27]:
type(df.loc[0])
Out[27]:
In [28]:
# DataFrame 에서 Column 을 가져오는 방법
df["Name"]
Out[28]:
In [30]:
df.Name #이렇게 써도 되긴 한데 함수랑 헷갈려. 기호에 따라 쓰자
Out[30]:
In [31]:
df2 = pd.DataFrame(columns=["나는 최고다"])
In [32]:
df2
Out[32]:
In [33]:
df2["나는 최고다"]
Out[33]:
In [34]:
df2.나는 최고다
In [35]:
df2 = pd.DataFrame(columns=["우리는_최고다"])
In [36]:
df2.우리는_최고다
Out[36]:
-
-시리즈의 기능으로 각각 채워 넣어진다.
In [38]:
# DataFrame 에서 Row 를 가져오는 방법
df.loc[0] #loc = location의 약자
Out[38]:
In [39]:
df.Name[0]
#이것과 loc가 다른 것은? 리스트인데 딕셔너리처럼 동작도 가능한 리스트다.
Out[39]:
In [40]:
df.loc[2]["Email"]
Out[40]:
In [41]:
df.Name #index로 나오게 되고
Out[41]:
In [42]:
df.loc[2] #column 이름으로 나오게 된다.
Out[42]:
In [43]:
df = pd.DataFrame(columns=["Name", "Email"])
In [55]:
df.loc[0] = ["김기표", "kkp@gmail.com"] # 데이터 추가하기 (1)
In [49]:
df.loc[0]
Out[49]:
In [45]:
df
Out[45]:
In [50]:
# 이것을 정확히 쓰기 위해서는 Column의 정확한 "순서"를 알고 있어야 합니다.
df.loc[0] = ["kkp@gmail.com", '김기표']
df
Out[50]:
In [57]:
#좋은 입력 방식. 딕셔너리 방식으로 넣으면 된다.
df.loc[1] = {"Name": "강기표", "Email": "kkp@naver.com"}
df
Out[57]:
In [52]:
#데이터의 Row를 추가하는 방법에 대해서 다룸
#데이터 Column을 추가하려면?
In [71]:
df["Address"] = ""
df
Out[71]:
In [59]:
# Address => "대기빌딩 지하2층 교무실 ____ 앞"
# 최대한 다양한 방법으로 해보시면 됩니다. ( 3가지+ )
In [74]:
# 1. for 문으로 시작하자. df.loc[____]
for i in range(len(df)):
name = df.loc[i]["Name"] #이름을 뽑았어요.
df.loc[i]["Address"] = "대기빌딩 지하2층 교무실 " + name + " 앞"
# + => 더하는 방법
# %s => 문자열 치환
# {name} => 문자열 치환 ( formatting )
In [75]:
df
Out[75]:
In [80]:
# 2. for 문을 돌린다. ( 쉽게 돌리는 방식 )
# 제가 잘 몰랐어요. 없는 거고 이거 까먹으시면 됩니다.
for index, row in df.iteritems():
# df.loc[index]["Address"] = "대기빌딩 지하2층 교무실 " + df.loc[index]["Name"] + " 앞"
print(index) #for문을 안 도는 이유는 index가 아니고 column이 나온다.
# df
In [81]:
df["Address"] = ""
In [82]:
df
Out[82]:
In [83]:
df["Address"] = "대기빌딩 지하 2층 교무실 " + df["Name"] + " 앞"
df
#왜 되는지 모르겠다. 그냥 되는 거다.
Out[83]:
In [84]:
df["Name"] #Series가 뽑힌다. Series의 기능? 연산이 가능하다.
Out[84]:
In [86]:
df["Name"] + " 앞" #이렇게 Series로 자동 연산이 쭉 된다.
Out[86]:
In [87]:
# 함수형 프로그래밍을 이용하자.
df["Address"] = ""
df
Out[87]:
In [88]:
def get_address(name):
return "대기빌딩 지하 2층 교무실 " + name + " 앞"
In [89]:
get_address("김기표")
Out[89]:
In [91]:
df["Name"].apply(get_address)
Out[91]:
In [92]:
df
Out[92]:
In [94]:
df["Address"] = df["Name"].apply(lambda name: "대기빌딩 지하 2층 " + name + " 앞")
In [95]:
df
Out[95]:
In [ ]: