Pandas Dataframe¶
레이블로 생성하기¶
In [1]:
import pandas as pd
# We create a dictionary of Pandas Series
items = {'Bob' : pd.Series(data = [245, 25, 55], index = ['bike', 'pants', 'watch']),
'Alice' : pd.Series(data = [40, 110, 500, 45], index = ['book', 'glasses', 'bike', 'pants'])}
In [2]:
# 판다스의 2차원 데이터 처리는,
# 데이터 프레임으로 한다.
# 데이터분석에서는, csv 파일을 판다스의 데이터프레임으로 읽어와서 작업한다.
In [4]:
df = pd.DataFrame(data= items)
In [5]:
df
Out[5]:
Bob | Alice | |
---|---|---|
bike | 245.0 | 500.0 |
book | NaN | 40.0 |
glasses | NaN | 110.0 |
pants | 25.0 | 45.0 |
watch | 55.0 | NaN |
In [6]:
# 왼쪽의 행부분의 진한 글씨 : 인덱스
# 위쪽의 열부분의 진한 글씨 : 컬럼
# 안쪽에 있는 데이터 : values
In [7]:
df.index
Out[7]:
Index(['bike', 'book', 'glasses', 'pants', 'watch'], dtype='object')
In [8]:
df.columns
Out[8]:
Index(['Bob', 'Alice'], dtype='object')
In [9]:
df.values
Out[9]:
array([[245., 500.], [ nan, 40.], [ nan, 110.], [ 25., 45.], [ 55., nan]])
In [10]:
df.shape
Out[10]:
(5, 2)
In [11]:
df.ndim
Out[11]:
2
In [12]:
df.size
Out[12]:
10
In [15]:
df.dtype
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In [15], line 1 ----> 1 df.dtype File ~\Anaconda3\envs\YH\lib\site-packages\pandas\core\generic.py:5575, in NDFrame.__getattr__(self, name) 5568 if ( 5569 name not in self._internal_names_set 5570 and name not in self._metadata 5571 and name not in self._accessors 5572 and self._info_axis._can_hold_identifiers_and_holds_name(name) 5573 ): 5574 return self[name] -> 5575 return object.__getattribute__(self, name) AttributeError: 'DataFrame' object has no attribute 'dtype'
In [19]:
df.info()
<class 'pandas.core.frame.DataFrame'> Index: 5 entries, bike to watch Data columns (total 2 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Bob 3 non-null float64 1 Alice 4 non-null float64 dtypes: float64(2) memory usage: 120.0+ bytes
NaN 은 해당 항목에 값이 없음을 뜻합니다. (Not a Number)¶
In [23]:
# We create a dictionary of Pandas Series without indexes
data = {'Bob' : pd.Series([245, 25, 55]),
'Alice' : pd.Series([40, 110, 500, 45])}
In [21]:
import numpy as np
In [22]:
np.nan
Out[22]:
nan
In [25]:
df2 = pd.read_csv('test.csv') # 같은경로에 있으면 바로 불러온다.
In [26]:
df2
Out[26]:
name | age | salary | |
---|---|---|---|
0 | 홍길동 | 24 | 3000 |
1 | 김나나 | 33 | 4000 |
2 | 진달래 | 40 | 8000 |
In [28]:
df2.to_csv('test2.csv') # 같은경로에 저장
Accessing Elements in Pandas DataFrames¶
In [ ]:
import pandas as pd
In [29]:
# We create a list of Python dictionaries
items2 = [{'bikes': 20, 'pants': 30, 'watches': 35},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5}]
In [40]:
df = pd.DataFrame(data = items2, index = ['store 1','store 2'])
In [41]:
df
Out[41]:
bikes | pants | watches | glasses | |
---|---|---|---|---|
store 1 | 20 | 30 | 35 | NaN |
store 2 | 15 | 5 | 10 | 50.0 |
In [42]:
##### 중요 !! '데이터 프레임'에서, 원하는 데이터를 억세스 하는 방법
##### 데이터 억세스 방법은 총 3가지!!!!가 있습니다.
### 1. 컬럼의 데이터를 가져오는 방법 => 변수명 바로 오른쪽에 대괄호 사용.
In [43]:
df["bikes"]
Out[43]:
store 1 20 store 2 15 Name: bikes, dtype: int64
In [44]:
df["watches"]
Out[44]:
store 1 35 store 2 10 Name: watches, dtype: int64
In [45]:
# bikes 컬럼과 glasses 컬럼만 가져오세요.
In [46]:
df[ ["bikes","glasses"]]
Out[46]:
bikes | glasses | |
---|---|---|
store 1 | 20 | NaN |
store 2 | 15 | 50.0 |
In [ ]:
In [47]:
### 2. 행과 열의 정보로 데이터를 가져오는 방법 중
### .loc[ , ] 로 가져오는 방법
### 이방법은, 사람용인, 인덱스와 컬럼명으로 데이터를 억세스한다.
In [48]:
# 스토어1의 팬츠 데이터를 가져오시오.
df.loc[ "store 1" , "pants" ]
Out[48]:
30
In [49]:
# 스토어 2에서, bikes 와 watches 데이터를 가져오시오
In [50]:
df
Out[50]:
bikes | pants | watches | glasses | |
---|---|---|---|---|
store 1 | 20 | 30 | 35 | NaN |
store 2 | 15 | 5 | 10 | 50.0 |
In [51]:
df.loc[ "store 2" , "bikes"]
Out[51]:
15
In [52]:
df.loc[ "store 2" , ]
Out[52]:
bikes 15.0 pants 5.0 watches 10.0 glasses 50.0 Name: store 2, dtype: float64
In [56]:
df.loc[ "store 2" , ["bikes","watches" ] ]
Out[56]:
bikes 15.0 watches 10.0 Name: store 2, dtype: float64
In [57]:
# 스토어2에서, pants 부터 glasses 까지의 데이터를 가져오시오
In [59]:
df.loc["store 2", "pants": "glasses"]
Out[59]:
pants 5.0 watches 10.0 glasses 50.0 Name: store 2, dtype: float64
'DataScience > Pandas' 카테고리의 다른 글
Pandas NaN을 처리하는 전략 dropna(), fillna() (0) | 2022.11.24 |
---|---|
Pandas CSV파일불러오기, .describe() 통계, .info()정보 (0) | 2022.11.24 |
Pandas 행, 열 추가, 데이터 삭제 drop(), rename(), 인덱스 초기화 reset_index(inplace= True) (0) | 2022.11.24 |
Pandas .iloc[ , ], 데이터 프레임에서 컬럼 만드는 방법 (0) | 2022.11.24 |
Pandas Series, 레이블과 인덱스, Operations (0) | 2022.11.23 |