Pandas讀取行列數據最全方法


1、讀取方法有按行(單行,多行連續,多行不連續),按列(單列,多列連續,多列不連續);部分不連續行不連續列;按位置(坐標),按字符(索引);按塊(list);函數有 df.iloc(), df.loc(), df.iat(), df.at(), df.ix()。

2、轉換為DF,賦值columns,index,修改添加數據,取行列索引

data = {'省份': ['北京', '上海', '廣州', '深圳'],
        '年份': ['2017', '2018', '2019', '2020'],
        '總人數': ['2200', '1900', '2170', '1890'],
        '高考人數': ['6.3', '5.9', '6.0', '5.2']}
df = pd.DataFrame(data, columns=['省份', '年份', '總人數', '高考人數', '高數'],
                  index=['one', 'two', 'three', 'four'])
df['高數'] = ['90', '95', '92', '98']
print("行索引:{}".format(list(df.index)))
print("列索引:{}".format(list(df.columns)))
print(df.index[1:3])
print(df.columns[1])
print(df.columns[1:3])
print(df)
行索引:['one', 'two', 'three', 'four']
列索引:['省份', '年份', '總人數', '高考人數', '高數']
Index(['two', 'three'], dtype='object')
年份
Index(['年份', '總人數'], dtype='object')
       省份    年份   總人數 高考人數  高數
one    北京  2017  2200  6.3  90
two    上海  2018  1900  5.9  95
three  廣州  2019  2170  6.0  92
four   深圳  2020  1890  5.2  98

3、iloc不能通過[:, [1:3]]取連續數據,取連續數據只能通過 df[df.columns[1:4]],先獲取列索引,再取數據。

print(df['省份'])  #按列名取列
print(df.省份)  #按列名取列
print(df[['省份', '總人數']])  #按列名取不連續列數據
print(df[df.columns[1:4]])  #按列索引取連續列數據
print(df.iloc[:, 1])  #按位置取列
print(df.iloc[:, [1, 3]])  #按位置取不連續列數據
one      北京
two      上海
three    廣州
four     深圳
Name: 省份, dtype: object
one      北京
two      上海
three    廣州
four     深圳
Name: 省份, dtype: object
       省份   總人數
one    北京  2200
two    上海  1900
three  廣州  2170
four   深圳  1890
         年份   總人數 高考人數
one    2017  2200  6.3
two    2018  1900  5.9
three  2019  2170  6.0
four   2020  1890  5.2
one      2017
two      2018
three    2019
four     2020
Name: 年份, dtype: object
         年份 高考人數
one    2017  6.3
two    2018  5.9
three  2019  6.0
four   2020  5.2

4、通過df.iloc[](數字)取行數據,取部分行部分列時,要先寫行,再寫列;有條件的取數據

print(df[1:3])  #按行取數據,這行代碼結果沒在下面輸出
print(df[df.高數>90]) #按行有條件的取數據,結果沒輸出
print
(df.iloc[1]) #按行取行數據 print(df.iloc[1, 3]) #按坐標取 print(df.iloc[[1], [3]]) #按坐標取 print(df.loc[df.index[1:3]]) #按行索引取行,但沒必要 print(df.iloc[1:3]) #按行取連續數據 print(df.iloc[[1, 3]]) 按行取不連續數據 print(df.iloc[[1,2,3], [2,4]]) 取部分行部分列數據
省份        上海
年份      2018
總人數     1900
高考人數     5.9
高數        95
Name: two, dtype: object
5.9
    高考人數
two  5.9
       省份    年份   總人數 高考人數  高數
two    上海  2018  1900  5.9  95
three  廣州  2019  2170  6.0  92
       省份    年份   總人數 高考人數  高數
two    上海  2018  1900  5.9  95
three  廣州  2019  2170  6.0  92
      省份    年份   總人數 高考人數  高數
two   上海  2018  1900  5.9  95
four  深圳  2020  1890  5.2  98
        總人數  高數
two    1900  95
three  2170  92
four   1890  98

5、通過df.loc[]索引(字符)取行數據。

print(df.loc['two'])
print(df.loc['two', '省份'])
print(df.loc['two':'three'])
print(df.loc[['one', 'three']])
print(df.loc[['one', 'three'], ['省份', '年份']])
省份        上海
年份      2018
總人數     1900
高考人數     5.9
高數        95
Name: two, dtype: object
上海
       省份    年份   總人數 高考人數  高數
two    上海  2018  1900  5.9  95
three  廣州  2019  2170  6.0  92
       省份    年份   總人數 高考人數  高數
one    北京  2017  2200  6.3  90
three  廣州  2019  2170  6.0  92
       省份    年份
one    北京  2017
three  廣州  2019

6、ix,iat,at取行列數據,此方法不常用,可以使用上面方法即可。

print(df.ix[1:3])
print(df.ix[:, [1, 3]])
print(df.iat[1,3])
print(df.at['two', '省份'])
       省份    年份   總人數 高考人數  高數
two    上海  2018  1900  5.9  95
three  廣州  2019  2170  6.0  92
         年份 高考人數
one    2017  6.3
two    2018  5.9
three  2019  6.0
four   2020  5.2
5.9
上海

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM