In [1]:
import pandas as pd
In [2]:
import numpy as np
In [3]:
import xml.etree.ElementTree as elemTree
In [4]:
xmlTree=elemTree.parse('C:/Users/folder')
In [5]:
# xml 파싱하기
root=xmlTree.getroot()
print(root)
<Element 'root' at 0x00000000081D5098>
In [6]:
week=root.find('data').text
In [7]:
MA_4=root.find('MA_4')
In [8]:
print(MA_4)
None
In [9]:
# 저장하는 변수 형태 지정
results=[]
for data in root:
week=int(data.find('week').text)
sales=int(data.find('sales').text)
if data.find('MA_4') is None:
MA_4=""
else:
MA_4=np.float(data.find('MA_4').text)
if data.find('y_hat_4') is None:
y_hat_4=""
else:
y_hat_4=np.float(data.find('y_hat_4').text)
if data.find('y_hat_5') is None:
y_hat_5=""
else:
y_hat_5=np.float(data.find('y_hat_5').text)
if data.find('MA_5') is None:
MA_5=""
else:
MA_5=np.float(data.find('MA_5').text)
results.append({"week":week,
"sales":sales,
"MA_4":MA_4,
"y_hat_4":y_hat_4,
"MA_5":MA_5,
"y_hat_5":y_hat_5})
In [10]:
results
Out[10]:
[{'week': 1,
'sales': 60,
'MA_4': '',
'y_hat_4': '',
'MA_5': '',
'y_hat_5': ''},
{'week': 2,
'sales': 225,
'MA_4': '',
'y_hat_4': '',
'MA_5': '',
'y_hat_5': ''},
{'week': 3,
'sales': 168,
'MA_4': '',
'y_hat_4': '',
'MA_5': '',
'y_hat_5': ''},
{'week': 4,
'sales': 7,
'MA_4': 115.0,
'y_hat_4': '',
'MA_5': '',
'y_hat_5': ''},
{'week': 5,
'sales': 52,
'MA_4': 113.0,
'y_hat_4': 115.0,
'MA_5': 102.4,
'y_hat_5': ''},
{'week': 6,
'sales': 32,
'MA_4': 64.75,
'y_hat_4': 113.0,
'MA_5': 96.8,
'y_hat_5': 102.4},
{'week': 7,
'sales': 11,
'MA_4': 25.5,
'y_hat_4': 64.75,
'MA_5': 54.0,
'y_hat_5': 96.8},
{'week': 8,
'sales': 9,
'MA_4': 26.0,
'y_hat_4': 25.5,
'MA_5': 22.2,
'y_hat_5': 54.0},
{'week': 9,
'sales': 148,
'MA_4': 50.0,
'y_hat_4': 26.0,
'MA_5': 50.4,
'y_hat_5': 22.2},
{'week': 10,
'sales': 160,
'MA_4': 82.0,
'y_hat_4': 50.0,
'MA_5': 72.0,
'y_hat_5': 50.4},
{'week': 11,
'sales': 66,
'MA_4': 95.75,
'y_hat_4': 82.0,
'MA_5': 78.8,
'y_hat_5': 72.0},
{'week': 12,
'sales': 271,
'MA_4': 161.25,
'y_hat_4': 95.75,
'MA_5': 130.8,
'y_hat_5': 78.8},
{'week': 13,
'sales': 24,
'MA_4': 130.25,
'y_hat_4': 161.25,
'MA_5': 133.8,
'y_hat_5': 130.8},
{'week': 14,
'sales': 58,
'MA_4': 104.75,
'y_hat_4': 130.25,
'MA_5': 115.8,
'y_hat_5': 133.8},
{'week': 15,
'sales': 87,
'MA_4': 110.0,
'y_hat_4': 104.75,
'MA_5': 101.2,
'y_hat_5': 115.8},
{'week': 16,
'sales': 52,
'MA_4': 55.25,
'y_hat_4': 110.0,
'MA_5': 98.4,
'y_hat_5': 101.2},
{'week': 17,
'sales': 142,
'MA_4': 84.75,
'y_hat_4': 55.25,
'MA_5': 72.6,
'y_hat_5': 98.4},
{'week': 18,
'sales': 66,
'MA_4': 86.75,
'y_hat_4': 84.75,
'MA_5': 81.0,
'y_hat_5': 72.6},
{'week': 19,
'sales': 30,
'MA_4': 72.5,
'y_hat_4': 86.75,
'MA_5': 75.4,
'y_hat_5': 81.0},
{'week': 20,
'sales': 95,
'MA_4': 83.25,
'y_hat_4': 72.5,
'MA_5': 77.0,
'y_hat_5': 75.4}]
In [11]:
# 판다스를 이용하여 Data Frame으로 변경
columns=["week","sales","MA_4","y_hat_4","MA_5","y_hat_5"]
xmlParsing=pd.DataFrame(results,columns=columns)
In [12]:
xmlParsing
Out[12]:
| week | sales | MA_4 | y_hat_4 | MA_5 | y_hat_5 | |
|---|---|---|---|---|---|---|
| 0 | 1 | 60 | ||||
| 1 | 2 | 225 | ||||
| 2 | 3 | 168 | ||||
| 3 | 4 | 7 | 115 | |||
| 4 | 5 | 52 | 113 | 115 | 102.4 | |
| 5 | 6 | 32 | 64.75 | 113 | 96.8 | 102.4 |
| 6 | 7 | 11 | 25.5 | 64.75 | 54 | 96.8 |
| 7 | 8 | 9 | 26 | 25.5 | 22.2 | 54 |
| 8 | 9 | 148 | 50 | 26 | 50.4 | 22.2 |
| 9 | 10 | 160 | 82 | 50 | 72 | 50.4 |
| 10 | 11 | 66 | 95.75 | 82 | 78.8 | 72 |
| 11 | 12 | 271 | 161.25 | 95.75 | 130.8 | 78.8 |
| 12 | 13 | 24 | 130.25 | 161.25 | 133.8 | 130.8 |
| 13 | 14 | 58 | 104.75 | 130.25 | 115.8 | 133.8 |
| 14 | 15 | 87 | 110 | 104.75 | 101.2 | 115.8 |
| 15 | 16 | 52 | 55.25 | 110 | 98.4 | 101.2 |
| 16 | 17 | 142 | 84.75 | 55.25 | 72.6 | 98.4 |
| 17 | 18 | 66 | 86.75 | 84.75 | 81 | 72.6 |
| 18 | 19 | 30 | 72.5 | 86.75 | 75.4 | 81 |
| 19 | 20 | 95 | 83.25 | 72.5 | 77 | 75.4 |
In [13]:
xdata=xmlParsing
df=xdata
df=xmlParsing
In [14]:
xdata.dtypes
Out[14]:
week int64 sales int64 MA_4 object y_hat_4 object MA_5 object y_hat_5 object dtype: object
In [15]:
xdata.shape
Out[15]:
(20, 6)
In [16]:
# index변경
xdata.set_index("week")
Out[16]:
| sales | MA_4 | y_hat_4 | MA_5 | y_hat_5 | |
|---|---|---|---|---|---|
| week | |||||
| 1 | 60 | ||||
| 2 | 225 | ||||
| 3 | 168 | ||||
| 4 | 7 | 115 | |||
| 5 | 52 | 113 | 115 | 102.4 | |
| 6 | 32 | 64.75 | 113 | 96.8 | 102.4 |
| 7 | 11 | 25.5 | 64.75 | 54 | 96.8 |
| 8 | 9 | 26 | 25.5 | 22.2 | 54 |
| 9 | 148 | 50 | 26 | 50.4 | 22.2 |
| 10 | 160 | 82 | 50 | 72 | 50.4 |
| 11 | 66 | 95.75 | 82 | 78.8 | 72 |
| 12 | 271 | 161.25 | 95.75 | 130.8 | 78.8 |
| 13 | 24 | 130.25 | 161.25 | 133.8 | 130.8 |
| 14 | 58 | 104.75 | 130.25 | 115.8 | 133.8 |
| 15 | 87 | 110 | 104.75 | 101.2 | 115.8 |
| 16 | 52 | 55.25 | 110 | 98.4 | 101.2 |
| 17 | 142 | 84.75 | 55.25 | 72.6 | 98.4 |
| 18 | 66 | 86.75 | 84.75 | 81 | 72.6 |
| 19 | 30 | 72.5 | 86.75 | 75.4 | 81 |
| 20 | 95 | 83.25 | 72.5 | 77 | 75.4 |
In [17]:
xdata.dtypes
df=xdata
In [18]:
df.set_index("week")
df.dtypes
Out[18]:
week int64 sales int64 MA_4 object y_hat_4 object MA_5 object y_hat_5 object dtype: object
In [19]:
df['MA_5'].iloc[4]
Out[19]:
102.4
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:90% !important;}</style>"))
In [ ]:
'슬기로운 건설 사무 자동화 > 1) 반복 작업 자동화' 카테고리의 다른 글
| [C#] Excel- 반복문/ cells, range 개체 활용/엑셀파일 저장 (0) | 2022.02.22 |
|---|---|
| [C#] Excel 파일 복사/사본 여러개 생성 (0) | 2022.02.22 |
| [python]pptx pdf 일괄 변환 하기 (0) | 2022.02.22 |
| [python] 정규표현식 활용하기 (0) | 2022.02.22 |
| [C#] XML Parsing (0) | 2022.02.22 |
댓글