1. 程式人生 > 其它 >PAT乙級真題 1006 換個格式輸出整數

PAT乙級真題 1006 換個格式輸出整數

技術標籤:Pythonpython資料分析

一、pandas

pandas 是基於NumPy 的一種工具,該工具是為解決資料分析任務而建立的。Pandas 納入了大量庫和一些標準的資料模型,提供了高效地操作大型資料集所需的工具。pandas提供了大量能使我們快速便捷地處理資料的函式和方法。你很快就會發現,它是使Python成為強大而高效的資料分析環境的重要因素之一。

二、if條件判斷DataFrame是否為空

dataframe.empty加if條件判斷檔案是否為空,如果返回的dataframe為空,可能導致某些邏輯錯誤。

data = pd.read_csv(filename, skiprows=1, header=None, error_bad_lines=False)

if data.empty:
     do empty
else:
     do not empty
data = pd.read_csv(filename, skiprows=1, header=None, error_bad_lines=False)
if not data.empty:
    do not empty
else:
    do empty

三、DataFrame取某一列

# one method
dataframe[b][dataframe[a]==1].values[0]


# two method
dataframe[dataframe[a]==1][b].values[0]

三、DataFrame按行按列遍歷的方式

在這裡插入圖片描述

iteritems(): 按列遍歷,將DataFrame的每一列迭代為(列名, Series)對,可以通過row[index]對元素進行訪問

iterrows(): 按行遍歷,將DataFrame的每一行迭代為(index, Series)對,可以通過row[name]對元素進行訪問

itertuples(): 按行遍歷,將DataFrame的每一行迭代為元祖,可以通過row[name]對元素進行訪問,比iterrows()效率要高

>>> import pandas as pd
>>> 
>>> pdd = [{'c1':10, 'c2':100}, {'c1':11, 'c2':111}, {'c1':22, 'c2':222}]
>>> 
>>> print(type(pdd))
<class 'list'>
>>> 
>>> df = pd.DataFrame(pdd)
>>> 
>>> print(df)
   c1   c2
0  10  100
1  11  111
2  22  222
>>> print(type(df))
<class 'pandas.core.frame.DataFrame'>

按列遍歷iteritems()用法:

# index--列名
>>> for index, row in df.iteritems():
...     print(index)
... 
c1
c2

# row--某一列, row[0]某一列的第一行
>>> for index, row in df.iteritems():
...     print(row[0], row[1], row[2])
... 
10 11 22
100 111 222

按行遍歷iterrows()用法:

# index-行號
>>> for index, row in df.iterrows():
...     print(index)
... 
0
1
2

# 某一行通過列名name訪問對應的元素
>>> for index, row in df.iterrows():
...     print(row['c1'], row['c2'])
... 
10 100
11 111
22 222

按行遍歷itertuples()用法:

# getattr(row, 'name')得到某行的元素
>>> for row in df.itertuples():
...     print(getattr(row, 'c1'), getattr(row, 'c2'))
... 
10 100
11 111
22 222

引用

【1】https://pandas.pydata.org/