# 第九週筆記
## 讀寫雲端文字檔:
### 寫入CSV:
```
with open('/content/drive/MyDrive/___DataSet//001_Hello.txt', 'w') as f:
f.write('Hello Google Drive 趙梓豐')
```
### 讀取CSV:
```
with open('/content/drive/MyDrive/___DataSet//001_Hello.txt', 'r') as f:
ss=f.read()
print(ss)
```
結果:
```
Hello Google Drive 趙梓豐
```
### 刪除檔案:
```
import os
if os.path.exists("/content/drive/MyDrive/___DataSet//001_Hello.txt"):
os.remove("/content/drive/MyDrive/___DataSet//001_Hello.txt")
print("檔案已經刪除")
else:
print("檔案不存在")
```
結果:
```
檔案已經刪除
```
## 處理外部檔案:
### 讀取excel檔:
1.
```
import pandas as pd
df = pd.read_excel('/content/drive/My Drive/___DataSet/001_Income_F.xlsx')
df
```
結果:

2.
```
import pandas as pd
data = pd.read_excel("/content/drive/My Drive/___DataSet/110 學年度全國大專校院及校長名錄(含學校本部地址).xlsx")
data
```
結果:

3.
```
import pandas as pd
df = pd.read_excel('/content/drive/My Drive/___DataSet/身高體重.xlsx')
df
```
結果:

### 讀取CSV檔:
```
df = pd.read_csv("/content/drive/My Drive/___DataSet/opendata110road.csv")
df
```
結果:

## Pandas DataFrame:
### 表格如何建立:
1.
```
import pandas as pd
grades = {
"name": ["Mike", "Sherry", "Cindy", "John"],
"math": [80, 75, 93, 86],
"chinese": [63, 90, 85, 70]
}
df = pd.DataFrame(grades)
df
```
結果:

2.
```
import pandas as pd
grades = {
"學號": ["A001", "A002", "A003", "A004", "A005"],
"體重": [60, 50, 80, 75, 72],
"身高": [165, 157, 182, 175, 170]
}
df = pd.DataFrame(grades)
print("使用字典來建立df:")
df
```
結果:

## 取得表格資料:
### head() and tail():
```
grades = [
["Mike", 80, 63],
["Sherry", 75, 90],
["Cindy", 93, 85],
["John", 86, 70]
]
df = pd.DataFrame(grades)
df.columns = ["student_name", "math_score", "chinese_score"]
df.columns = ["name", "math", "chinese"]
print(df.head(1))
print(df.tail(1))
```
結果:
```
name math chinese
0 Mike 80 63
name math chinese
3 John 86 70
```
### 中括號[]:
```
import pandas as pd
grades = {
"學號": ["A001", "A002", "A003", "A004", "A005"],
"體重": [60, 50, 80, 75, 72],
"身高": [165, 157, 182, 175, 170]
}
df = pd.DataFrame(grades)
print(df["身高"])
print(df[["身高","體重"]])
print(df[0:3])
```
結果:
```
0 165
1 157
2 182
3 175
4 170
Name: 身高, dtype: int64
身高 體重
0 165 60
1 157 50
2 182 80
3 175 75
4 170 72
學號 體重 身高
0 A001 60 165
1 A002 50 157
2 A003 80 182
```
### at[資料索引值,欄位名稱]:
```
print("利用at()方法取得索引值為1的math欄位資料")
print(df.at[1, "身高"])
```
結果:
```
利用at()方法取得索引值為1的math欄位資料
157
```
### iat[資料索引值,欄位順序]
```
print("利用iat()方法取得索引值為1的第一個欄位資料")
print(df.iat[4,2])
```
結果:
```
利用iat()方法取得索引值為1的第一個欄位資料
170
```
### loc[資料索引值,欄位名稱]:
```
print("取得資料索引值為1和3的name及chinese欄位資料集")
print(df.loc[[1, 3], ["學號", "體重"]])
new_df=df.loc[[1, 3], ["學號", "體重"]]
type(new_df)
```
結果:
```
取得資料索引值為1和3的name及chinese欄位資料集
學號 體重
1 A002 50
3 A004 75
pandas.core.frame.DataFrame
```
### iloc[資料索引值,欄位順序]:
```
print("取得資料索引值為1和3的第一個及第三個欄位資料集")
print(df.iloc[[1, 3], [0, 2]])
```
結果:
```
取得資料索引值為1和3的第一個及第三個欄位資料集
學號 身高
1 A002 157
3 A004 175
```
## range使用介紹:
### 練習:
```
for i in range(0,5):
print(i)
print(df.at[i, "學號"])
```
結果:
```
0
A001
1
A002
2
A003
3
A004
4
A005
```
### 雙迴圈:
```
for i in range(0,5):
for j in range(0,5):
print(f'{i},{j}')
```
結果:
```
0,0
0,1
0,2
0,3
0,4
1,0
1,1
1,2
1,3
1,4
2,0
2,1
2,2
2,3
2,4
3,0
3,1
3,2
3,3
3,4
4,0
4,1
4,2
4,3
4,4
```
## 回家作業:
1.
```
import pandas as pd
grades = {
"學號": ["A001", "A002", "A003", "A004", "A005"],
"體重": [60, 50, 80, 75, 72],
"身高": [165, 157, 182, 175, 170]
}
df = pd.DataFrame(grades)
print(df.iloc[[0], [0,1,2]])
```
結果:
```
學號 體重 身高
0 A001 60 165
```
2.
```
import pandas as pd
grades = {
"學號": ["A001", "A002", "A003", "A004", "A005"],
"體重": [60, 50, 80, 75, 72],
"身高": [165, 157, 182, 175, 170]
}
df = pd.DataFrame(grades)
for i in range(0,5):
for j in range(i,i+1):
for k in range(i,i+1):
print(f'{df.at[i, "學號"]},{df.at[j, "體重"]},{df.at[k, "身高"]}')
```
結果:
```
A001,60,165
A002,50,157
A003,80,182
A004,75,175
A005,72,170
```