import xml.etree.elementtree as et
import pandas as pd
defiter_records
(records)
:"""
遍歷每個節點的生成器
:param records:
:return:
"""for record in records:
temp_dict =
# 儲存節點key-value
for var in record:
temp_dict[var.attrib[
'var_name']]
= var.text
# 生成值,即每個節點的資料
yield temp_dict
defread_xml
(xmlfilename)
:"""
讀取xml資料,返回df
:param xmlfilename:
:return:
"""with
open
(xmlfilename,
'r')
as xml_file:
tree = et.parse(xml_file)
# 訪問根節點
root = tree.getroot(
)# 從根節點開始遍歷,返回df
return pd.dataframe(
list
(iter_records(root)))
defxml_encode
(row)
:"""
將每行資料轉換成xml
:param row:
:return:
"""# 輸出節點開始標籤 ,名稱可以根據實際需要修改
xmlitem =
[' '
]# 轉換成xml格式
for field in row.index:
line =
' '
.format
(field, row[field]
)# 輸出節點結束標籤
' '
)# 返回結果
return
'\n'
.join(xmlitem)
defwrite_xml
(xmlfilename, data)
:"""
將資料寫入xml檔案
:param xmlfilename:
:param data:
:return:
"""with
open
(xmlfilename,
'w')
as xmlfile:
# 寫頭部
xmlfile.write(
'<?xml version="1.0" encoding="utf-8"?>'
) xmlfile.write(
'\n'
)# 名稱可以根據實際需要修改
# 寫資料
xmlfile.write(
'\n'
.join(data.
(xml_encode, axis=1)
))xmlfile.write(
'\n'
)# 名稱可以根據實際需要修改
xml_filenane = r'e:\data\realestate_trans.xml'
new_filename = r'e:\data\realestate_trans_output.xml'
xml_df = read_xml(xml_filenane)
# 讀取到df
print
(xml_df)
# write_xml(new_filename, xml_df) # 寫入新xml檔案
pandas迭代讀mysql Pandas迭代
pandas物件之間的基本迭代的行為取決於型別。當迭代乙個系列時,它被視為陣列式,基本迭代產生這些值。其他資料結構,如 dataframe和panel,遵循類似慣例迭代物件的鍵。簡而言之,基本迭代 對於i在物件中 產生 series 值 dataframe 列標籤 pannel 專案標籤 迭代dat...
pandas系列之index小記
import pandas as pd 資料準備 df pd.dataframe np.arange 20 reshape 5,4 index 1 3,6 9,10 重置索引且保留原始索引 df.reset index 重置索引且不保留原始索引 df.reset index drop true 按照...
numpy和pandas學習小記錄
numpy和pandas是python的科學計算包,其常用於深度學習中的資料處理,在此將自己的學習情況進行記錄。筆者在ubuntu18.04的系統直接開啟終端輸入 pip install numpy,pip install pandas 進行numpy pandas 安裝 定義乙個矩陣import ...