​python中pandas讀取csv文件​時如何省去csv.reader()操作指定列步驟

優點:

  • 方便,有專門支持讀取csv文件的pd.read_csv()函數。
  • 將csv轉換成二維列表形式
  • 支持通過列名查找特定列。
  • 相比csv庫,事半功倍

1.讀取csv文件

import pandas as pd
 
file="c:\data\test.csv"
csvPD=pd.read_csv(file)
 
df = pd.read_csv('data.csv', encoding='gbk') #指定編碼
 
 
read_csv()方法參數介紹
filepath_or_buffer:文件所在路徑
encoding :編碼,字符型,通常為'utf-8',如果中文讀取不正常,可以將encoding設為'gbk'
sep:分隔符,默認為一個英文逗號,即','
delimiter :備選分隔符,如果指定瞭delimiter則sep失效
header :整數或者由整數組成的列表,以用來指定由哪一列或者哪幾列作為列名,默認為header=0,表示第一列作為列名
eg:  pd.read_csv('data.csv', encoding='gbk', header=1) # 指定第二列作為列名
     pd.read_csv('data.csv', encoding='gbk', header=[0,1,3])
     pd.read_csv('data.csv', encoding='gbk', header=None) #表示不從文件數據中指定行作為列名,這是Pandas會自動生成從零開始的序列作為列名
 
names:一個列表,為數據額外指定列名。
pd.read_csv('data.csv', encoding='gbk', names=['第一列', '第二列', '第三列', '第四列'])

2.#指定列:通過索引指定列名獲取列

data_new[] 建立空表存儲行信息
for i in range(len(csvPD)):
    lst_new = []  # 建立空列表存儲行信息
    if "未知版本" in str(csvPD['版本組件'][i]):
        print(csvPD['版本組件'][i])
        # print(csvPD['匹配數量'][i])
        # print(csvPD['git'][i])
        # print(csvPD['來源鏈接'][i])
        lst_new.append(csvPD['版本組件'][i])
        lst_new.append(csvPD['匹配數量'][i])
        lst_new.append(csvPD['git'][i])
        lst_new.append(csvPD['來源鏈接'][i])
 
        data_new.append(lst_new)  # 添加每行信息

3.根據index查詢

條件:首先導入的數據必須的有index
或者自己添加吧,方法簡單,讀取excel文件時直接加index_col

代碼示例:

import pandas as pd                     #導入pandas庫
 
excel_file = './try.xlsx'               #導入excel數據
data = pd.read_excel(excel_file, index_col='姓名')        
#這個的index_col就是index,可以選擇任意字段作為索引index,讀入數據
print(data.loc['李四'])                #使用loc函數來查找

4.已知數據在第幾行找到想要的數據

假如我們的表中,有某個員工的工資數據為空瞭,那我們怎麼找到自己想要的數據呢。

代碼如下:

for i in data.columns:
    for j in range(len(data)):
        if (data[i].isnull())[j]:
            bumen = data.iloc[j, [0]]                             #找出缺失值所在的部門
            data[i][j] = charuzhi(bumen)

首先檢索全部的數據,然後我們可以用pandas中的iloc函數。上面的iloc[j, [2]]中j是具體的位置,【0】是你要得到的數據所在的column

"""根據條件查詢某行數據"""
import pandas as pd            #導入pandas庫
 
excel_file = './try.xlsx'        #導入文件
data = pd.read_excel(excel_file)      #讀入數據
 
print(data.loc[data['部門'] == 'A', ['姓名', '工資']])     #部門為A,打印姓名和工資
print(data.loc[data['工資'] < 3000, ['姓名','工資']])    #查找工資小於3000的人

若要把這些數據獨立生成excel文件或者csv文件:

添加以下代碼:

"""導出為excel或csv文件"""
dataframe_1 = data.loc[data['部門'] == 'A', ['姓名', '工資']]
dataframe_2 = data.loc[data['工資'] < 3000, ['姓名', '工資']]
dataframe_1.to_excel('dataframe_1.xlsx')
dataframe_2.to_excel('dataframe_2.xlsx')
 
data.iloc[:,:2]  #即全部行,前兩列的數據
 
 
data['columns']  #columns即你需要的字段名稱即可
#註意這列的columns不能是index的名稱
#如果要打印index的話就data.index
data.columns  #與上面的一樣
 
data.iloc[:10,:][data.工資>6000] #找出前11行裡工資大於6000的所有人的信息瞭

5.指定單元格:1001A列23時的AQI值

keyWord="1001A"
for i in range(len(csvPD)):
    if str(csvPD['hour'][i])=="23" and str(csvPD['type'][i])== "AQI":
        result=csvPD[keyWord][i]
        print(result)
        

解決遇到的"NAN":

  • csv文件中:1001A站點0時的AQI為空白值,返回的結果為NAN
  • NAN全稱:Not A Number

常規解決思路:

使用numpy函數來判斷:np.isnan()xxx is np.nan
通過運算操作判斷:任何數字乘上0都是0
讀取文件時加參數:pd.read_csv(file, keep_default_na=False)

操作結果如下圖:

  • 1.推薦使用np.isnan()csvPD["1002A"][0] is np.nan顯示為Flase
  • 2.推薦使用nan*0之後仍是nan,而不是0
  • 3.加瞭參數後,輸出的所有數據類型變為str,nan變為空值,len(result)=0。

到此這篇關於​python中pandas讀取csv文件​時如何省去csv.reader()操作指定列步驟的文章就介紹到這瞭,更多相關​python中pandas讀取csv文件 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: