iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Python

Python和R入門語法比較系列 第 9

02-2 Python的read...和 R語法 #讀檔

  • 分享至 

  • xImage
  •  

01 Python的write( ) #寫檔 和R語法

最後輸出 'Rnews.txt' 檔案
我們拿來用

Python

取得current working directory

import os
os.getcwd()

注意上篇編碼問題

with open('檔名.副檔名', encoding='編碼') as f:
f.readlines()

讀檔

記事本(純文字檔案)

with open('data/news.txt', encoding='utf-8') as f:
    f.readlines()
with open('data/news.txt', encoding='utf-8') as f:
    r = f.readlines()
r
['蘋果以Swift開源套件形式提供其同態加密技術\n',
 '讓開發者更容易打造資料安全應用服務\n',
 '\n',
 '\tMashdigi\n',
 '\t更新時間: 2024年8月4日 週日 下午10:27\n',
 '\t蘋果稍早將其用於旗下服務、\t藉此保護用戶隱私安全的同態加密 (Homomorphic Encryption)技術,\t透過Swift開源套件形式對外提供使用,\t讓開發者能更容易在應用服務內以此技術確保資料安全。']
type(r)
list
# list

### 長度

list

len(r)
    6
### 第1筆
r[0]
    '蘋果以Swift開源套件形式提供其同態加密技術\n'
### 最後1筆
r[-1]
    '\t蘋果稍早將其用於旗下服務、\t藉此保護用戶隱私安全的同態加密 (Homomorphic Encryption)技術,\t透過Swift開源套件形式對外提供使用,\t讓開發者能更容易在應用服務內以此技術確保資料安全。'
### 前3筆
r[0:3]
    ['蘋果以Swift開源套件形式提供其同態加密技術\n', '讓開發者更容易打造資料安全應用服務\n', '\n']
### 後3筆
r[-3:]
    ['\tMashdigi\n',
     '\t更新時間: 2024年8月4日 週日 下午10:27\n',
     '\t蘋果稍早將其用於旗下服務、\t藉此保護用戶隱私安全的同態加密 (Homomorphic Encryption)技術,\t透過Swift開源套件形式對外提供使用,\t讓開發者能更容易在應用服務內以此技術確保資料安全。']

Excel、CSV ( 表格 )

import csv
with open('data/test.csv', encoding='big5') as f:
    r = csv.reader(f)
    r = list(r)
r
 [['月份',
      '單位名稱',
      '宣導類型',
      '宣導計畫/主要內容',
      '刊登及播出時間',
      '刊登及播出次數',
      '託播對象',
      '金額/元',
      '備註'],
     ['1',
      '戶政司',
      '廣播媒體',
      '戶政精進便民措施',
      '105年1月1日-1月31日',
      '53次',
      '警察廣播電臺',
      '43400',
      '1.本案托播期間為105.1.1至105.3.10,計70天,總費用98,000元,播出次數120次。\n2.經計算1月份日數為31天,費用43,400元,計播出53次。'],
     ['1',
      '民政司',
      '平面媒體',
      '臺灣宗教文化創意沃土計畫(漫遊宗教秘境的最佳指南-臺灣宗教文化地圖)',
      '105年1月22日',
      '1次',
      '民眾傳播事業有限公司-寺廟巡禮專刊',
      '80000',
      ''],
     ['1',
      '民政司',
      '廣播媒體',
      '105年度政治獻金法宣導',
      '105年1月3日-1月10日',
      '8天',
      '警察廣播電臺',
      '免費',
      '公益托播'],
     ['1',
      '民政司',
      '廣播媒體',
      '105年度政治獻金法宣導人物專訪',
      '105年1月8日',
      '1次',
      '警察廣播電臺',
      '免費',
      '公益托播'],
     ['1',
      '民政司',
      '電視媒體',
      '政治獻金動畫宣導短片',
      '105年1月1日-1月15日',
      '台視25次    華視20次     中視52次     民視33次',
      '台視、中視、華視、民視',
      '免費',
      '公益托播'],
     ['1',
      '民政司',
      '網路媒體',
      '「105年第14任總統、副總統選舉與第9屆立法委員選舉 合法捐贈政治獻金,你我都安心!」宣導訊息1則',
      '105年1月1日-1月15日',
      '15天',
      '國家書店',
      '免費',
      '公益托播'],
     ['2',
      '戶政司',
      '廣播媒體',
      '戶政精進便民措施',
      '105.2.1~\n105.2.29',
      '49',
      '警察廣播電臺',
      '40600',
      '1.本案托播期間為105.1.1至105.3.10,計70天,總費用98,000元,播出次數120次。\n2.經計算2月份日數為29天,費用40,600元,計播出49次。'],
     ['3',
      '戶政司',
      '廣播媒體',
      '戶政精進便民措施',
      '105.3.1~\n105.3.10',
      '18',
      '警察廣播電臺',
      '14000',
      '1.本案託播期間為105.1.1至105.3.10,計70天,總費用98,000元,播出次數120次。\n2.經計算3月份日數為10天,費用14,000元,計播出18次。'],
     ['4',
      '民政司',
      '電視媒體',
      '105年度公益託播環保自然葬宣導方案-最後的願望篇',
      '105年3月23日~4月10日',
      '125次',
      '台視41次\n華視24次\n中視19次\n民視35次\n原民臺6次',
      '免費',
      '公益託播'],
     ['5',
      '政風處',
      '廣播媒體',
      '105年度廉政宣導',
      '105年5月15日-5月31日',
      '5次',
      '警察廣播電臺',
      '8462',
      '本案總經費11萬元,播出期間為5月15日-11月30日,每月平均分配約16,923元,本月份僅播出半個月,故金額為8,462元。'],
     ['5',
      '資訊中心',
      '網路媒體',
      '報稅活動:\n敲起猴年歡樂鼓,掌聲響起憑證舞',
      '105年5月1日~5月31日',
      '每天',
      '我的e管家',
      '免費',
      '公益托播'],
     ['5',
      '資訊中心',
      '網路媒體',
      '報稅活動:\n敲起猴年歡樂鼓,掌聲響起憑證舞',
      '105年5月1日~5月31日',
      '每天',
      '北區、中區、南區、高雄、臺北國稅局、及稅務入口網站',
      '免費',
      '公益托播'],
     ['5',
      '資訊中心',
      '網路媒體',
      '報稅活動:\n敲起猴年歡樂鼓,掌聲響起憑證舞',
      '105年5月1日~5月31日',
      '每天',
      'MOICA官方網站',
      '免費',
      '公益托播'],
     ['5',
      '資訊中心',
      '網路媒體',
      '報稅活動:\n敲起猴年歡樂鼓,掌聲響起憑證舞',
      '105年5月1日~5月31日',
      '每天',
      'MOICA好康福利社(粉絲專業)',
      '免費',
      '公益托播'],
     ['6',
      '政風處',
      '廣播媒體',
      '105年度廉政宣導',
      '105年6月1日-6月30日',
      '52次',
      '警察廣播電臺',
      '16923',
      '本案總經費11萬元,播出期間為5月15日-11月30日,每月平均分配約16,923元。'],
     ['6',
      '戶政司',
      '廣播媒體',
      '戶籍登記-異地辦理 貼心服務',
      '105年4月18-4月24日',
      '6日',
      '警察廣播電臺',
      '免費',
      '原應屬4月之政策宣導,因免費故4月誤植為無,爰補在6月公告。'],
     ['7',
      '政風處',
      '廣播媒體',
      '105年度廉政宣導',
      '105年7月1日-7月31日',
      '10次',
      '警察廣播電臺',
      '16923',
      '本案總經費11萬元,播出期間為5月15日-11月30日,每月平均分配約16,923元。'],
     ['7',
      '民政司',
      '報紙',
      '全國孝行獎表揚活動孝行事蹟宣導',
      '105年7月15日、19日、20日',
      '5次',
      '國語日報、中國時報',
      '285000',
      '國語日報刊登日期為(7/15、7/19、7/20)。\n中國時報刊登日期為(7/15、7/19)。'],
     ['7',
      '民政司',
      '網路媒體',
      '宣導環保自然葬觀念及本部全國殯葬資訊入口網',
      '105年6月24日-7月27日',
      '34日',
      'GOOGLE聯播網及YAHOO原生廣告',
      '97550',
      ''],
     ['8',
      '政風處',
      '廣播媒體',
      '105年度廉政宣導',
      '105年8月1日-105年8月31日',
      '8次',
      '警廣',
      '16923',
      '本案總經費11萬元,撥出期間為5月15日-11月30日,每月平均分配約16,923元。'],
     ['9',
      '政風處',
      '廣播媒體',
      '105年度廉政宣導',
      '105年9月1日-105年9月30日',
      '52次',
      '警察廣播電臺',
      '16923',
      '本案總經費11萬元,撥出期間為5月15日-11月30日,每月平均分配約16,923元。'],
     ['10',
      '政風處',
      '廣播媒體',
      '105年度廉政宣導',
      '105年10月1日-105年10月31日',
      '10次',
      '警廣',
      '16923',
      '本案總經費11萬元,播出期間為5月15日-11月30日,每月平均分配約16,923元。'],
     ['10',
      '戶政司',
      '廣播媒體',
      '亡故者親屬申請保險理賠1站通',
      '105.10.10-105.10.16',
      '7次',
      '內政部警政署警察廣播電臺',
      '免費',
      '本案託播期間為105.10.10至105.10.16(7天)無須費用,播出次數為7次。\n\n\n\n\n\n\n'],
     ['11',
      '政風處',
      '廣播媒體',
      '105年度廉政宣導',
      '105年11月1日-105年11月30日',
      '8次',
      '警廣',
      '16923',
      '本案總經費11萬元,播出期間為5月15日-11月30日,每月平均分配約16,923元。'],
     ['11',
      '戶政司',
      '廣播媒體',
      '戶政行動化服務',
      '105年11月7日-105年11月13日',
      '7次',
      '內政部警政署警察廣播電臺',
      '免費',
      '本案托播期間為105年11月7日至105年11月13日(7天)無須費用,播出次數為7次。'],
     ['11',
      '地政司',
      '平面媒體',
      '1.地籍清理,自105年開始清理權利範圍登記空白的土地\n2.地籍異動即時通,保障產權實在安心',
      '105年11月11日',
      '1次',
      '民眾日報',
      '50000',
      ''],
     ['11',
      '民政司',
      '電視媒體',
      '環保自然葬-最後的願望',
      '105年11月16日-11月29日',
      '95次',
      '台視47次\n華視5次\n中視6次\n民視37次',
      '免費',
      '公益託播'],
     ['12',
      '戶政司',
      '廣播媒體',
      '亡故者親屬申請保險理賠1站通',
      '105.10.27-12.26',
      '122次',
      '內政部警政署警察廣播電臺',
      '98000',
      ''],
     ['12',
      '戶政司',
      '廣播媒體',
      '加強宣導國人對「免附戶籍謄本之便民措施」相關訊息',
      '105.11.10-12.26',
      '106次',
      '內政部警政署警察廣播電臺',
      '91000',
      '']]
import pandas as pd
with open('data/test.csv', encoding='big5') as f:
    p=pd.read_csv(f)
p

https://ithelp.ithome.com.tw/upload/images/20240822/20162398IfrV2XlZTW.png

type(p)
    pandas.core.frame.DataFrame

DataFrame

長度

len(p) # 列數
    29

列數, 欄數

p.shape
    (29, 9)
len(p.index)
    29
len(p.columns)
    9

查看某個欄位

p.備註

    0     1.本案托播期間為105.1.1至105.3.10,計70天,總費用98,000元,播出次數...
    1                                                   NaN
    2                                                  公益托播
    3                                                  公益托播
    4                                                  公益托播
    5                                                  公益托播
    6     1.本案托播期間為105.1.1至105.3.10,計70天,總費用98,000元,播出次數...
    7     1.本案託播期間為105.1.1至105.3.10,計70天,總費用98,000元,播出次數...
    8                                                  公益託播
    9     本案總經費11萬元,播出期間為5月15日-11月30日,每月平均分配約16,923元,本月份...
    10                                                 公益托播
    11                                                 公益托播
    12                                                 公益托播
    13                                                 公益托播
    14          本案總經費11萬元,播出期間為5月15日-11月30日,每月平均分配約16,923元。
    15                       原應屬4月之政策宣導,因免費故4月誤植為無,爰補在6月公告。
    16          本案總經費11萬元,播出期間為5月15日-11月30日,每月平均分配約16,923元。
    17    國語日報刊登日期為(7/15、7/19、7/20)。\n中國時報刊登日期為(7/15、7/19)。
    18                                                  NaN
    19          本案總經費11萬元,撥出期間為5月15日-11月30日,每月平均分配約16,923元。
    20          本案總經費11萬元,撥出期間為5月15日-11月30日,每月平均分配約16,923元。
    21          本案總經費11萬元,播出期間為5月15日-11月30日,每月平均分配約16,923元。
    22    本案託播期間為105.10.10至105.10.16(7天)無須費用,播出次數為7次。\n\...
    23          本案總經費11萬元,播出期間為5月15日-11月30日,每月平均分配約16,923元。
    24         本案托播期間為105年11月7日至105年11月13日(7天)無須費用,播出次數為7次。
    25                                                  NaN
    26                                                 公益託播
    27                                                  NaN
    28                                                  NaN
    Name: 備註, dtype: object
### 第1筆
p[0:1]

https://ithelp.ithome.com.tw/upload/images/20240822/201623981hkEwFuA2W.png

### 最後1筆
p[-1:]

https://ithelp.ithome.com.tw/upload/images/20240822/20162398mNrg29r9eI.png

### 前3筆
p[0:3]

https://ithelp.ithome.com.tw/upload/images/20240822/201623981z2AvhGq1p.png

### 後3筆
p[-3:]

https://ithelp.ithome.com.tw/upload/images/20240822/20162398hsjK8cpalR.png

### 前5筆
p.head()

https://ithelp.ithome.com.tw/upload/images/20240822/20162398aMeyJfNvgk.png

### 後5筆
p.tail()

https://ithelp.ithome.com.tw/upload/images/20240822/20162398dsJw9NTLSM.png

R


#### 讀檔 ####
# data/news.txt
getwd()
setwd('/Users/carplee/Desktop/untitled folder/')

#記事本(純文字檔案)
readLines('data/news.txt')
r = readLines('data/news.txt', encoding='UTF-8')
class(r)

#character
length(r)
#第1筆
r[1]
#最後1筆
#r[-1] 意思是 取 第1筆以外的

#前3筆
r[1:3]
head(r,3)
#後3筆
tail(r,3)

#### csv ####
# 先改檔案編碼方式再read
p = read.csv('data/test_utf8.csv'
             ,encoding='utf-8')
p

class(p)

#### data.frame ####
#長度
length(p) # r的長度是指欄位數

#列數, 欄數
dim(p)

nrow(p)
ncol(p)

#查看某個欄位
p$備註

#第1筆
p[1,]
#最後1筆

#前3筆
p[1:3,]

#後3筆

#前5筆
head(p,5)
#後5筆
tail(p,5)

內容預告:

03 more about csv in Python and R

04 Python: pandas Series 數值資料 v R: 數值向量

05 Python: Pandas Series 字串資料 v. R:文字向量

06 日期 in Python and R

07 Python 和 R 的 字串處理


上一篇
02-1 encoding 編碼 是什麼
下一篇
03 more about csv in Python and R [16th 鐵人 Day 10]
系列文
Python和R入門語法比較13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言