AI小知識系列(三) Pandas常用操作

Pandas常用操作

import pandas as pd
import numpy as np
#以下操作對100行,5列的數據進行操作

1.讀取csv文件

csv_file = pd.read_csv('test.csv')
#csv_file爲dataframe格式

#參數header,指定某行爲列名
##讀取文件第一行 爲數據時(即文件中無列名),採用header=None進行讀取(默認header=0)
##header參數是用來將第header行指定爲列名,若header=None,則說明文件中無列名,得到的dataframe會默認以0,1,2···爲列名
##header也可以用列表做參數,如header=[0,1,3],這裏表明,第0,1,3行爲列名,第2行會被丟棄
csv_file = pd.read_csv('test.csv',header=None)

#參數names,指定列名,應用此參數時,默認header=None。默認None。
##打開csv文件,並指定列名爲a,b,c,d,e
csv_file = pd.read_csv('test.csv',names=['a','b','c','d','e'])

#參數index_col, 以第index_col列,作爲索引值。默認None。
##若文件第0列時索引值,比如0~100,則設置該列爲索引值
csv_file = pd.read_csv('test.csv',index_col=0)

#參數usecols,指定讀取哪幾列
##讀取文件的第0,1,3列
csv_file = pd.read_csv('test.csv',usecols=[0,1,3])

#參數dtype,設置第幾列讀取的數據類型
csv_file = pd.read_csv('test.csv',dtype={'col_name1':object,'col_name2': np.float64})

#參數sep,默認','。即默認csv文件中的列與列之間以','分割,這裏可以自己更換。
##若文件以'\t'分隔,則讀取文件可採用
csv_file = pd.read_csv('test.csv',sep='\t')

#參數na_values,替換NAN值,默認NAN等
##如使用'str',替換文件中的空值
csv_file = pd.read_csv('test.csv',na_values='str')

2.寫csv文件

csv_file.to_csv('result.csv')
#將dataframe格式的數據,寫入到result.csv文件中

#參數index,默認True,將索引值寫入到文件中。
csv_file.to_csv('result.csv',index=False)

#參數columns,指定哪幾列寫入到文件中
csv_file.to_csv('result.csv',columns=[0,1,3])

#參數header,默認header=0。如果沒有表頭,可以將其設爲None
csv_file.to_csv('result.csv',header=None)

#參數sep,默認','。即默認csv文件中的列與列之間以','分割,這裏可以自己更換。
#若想要生成的csv文件的列與列之間以'\t'分割。
csv_file.to_csv('result.csv',sep='\t')

#參數na_rep,替換NAN值,默認NAN等
csv_file.to_csv('result.csv',na_rep='str')

3.DataFrame與Numpy格式的轉換

#dataframe 轉 numpy
np_values = df_values.values

#numpy 轉 dataframe
df_values = pd.DataFrame(np_values)

#numpy 轉 dataframe 並指定列名
df_values = pd.DataFame(np_values,columns=[1,2,3,4,5])
#numpy 轉 dataframe 並指定行名(索引)
df_values = pd.DataFame(np_values,index=[i for i in range(100)])

4.DataFrame數據的創建

df=pd.Dataframe(columns=[],index=[],data=[]) ##創建一個Dataframe

#創建方式1--字典的鍵作爲列索引
data = {'水果':['蘋果','梨','草莓'],
       '數量':[3,2,5],
       '價格':[10,9,8]}
df = DataFrame(data)

#創建方式2--外層字典的鍵作爲列索引,內層字典的鍵作爲行索引
data = {'數量':{'蘋果':3,'梨':2,'草莓':5},
       '價格':{'蘋果':10,'梨':9,'草莓':8}}
df = DataFrame(data)

#創建方式3--使用包含Series的字典創建DataFrame
data = {'水果':Series(['蘋果','梨','草莓']),
       '數量':Series([3,2,5]),
       '價格':Series([10,9,8])}
df = DataFrame(data)

5.DataFrame數據的統計性描述

#計算每一列的統計數據,如數量、均值等等,默認只對數值型的數據進行統計
df_values.describe()
#使describe函數可以對字符型數據進行統計
df_values.describe(include=['object'])
#統計每列的min, max,mean,std,quantile,注意:當數據中存在不可比較數據時,該代碼會出錯
df.describe('all')

#得到每一列的非空數量
df_values.info()

#得到每一列的數據類型
df_values.dtypes

6.DataFrame數據的查看

#查看前5行的數據
df_values.head()
#顯示前10行的數據
df_values.head(n=10)

#查看最後5行的數據
df_values.tail()

#查看dataframe數據的列名
df_values.columns

#查看dataframe數據的行名(索引)
df_values.index

7.DataFrame的切片操作

#取一列的所有數據
##利用列名直接取某一列
df_values['column_name']
##取第index列的數據
df_values[df.columns[index]]

#取某一行的數據
##根據行的位置,取特定行數據(列全取)
df_values.loc[index]
##取index行的,ab兩列數據
df_values.loc[[index],['a','b']]
##取index行的,列名爲'a' 到 列名爲 'b'的所有列
df_values.loc[[index],'a':'b']

#根據索引位置來取數
##取某一範圍的數字
df_values.iloc[0:10,0:10]
##可按照需求,選擇特定的行和列
df_values.iloc[[0,5,10],[1,8,10]]

#根據條件,邏輯值索引取數
##取出A列中大於0的所有數據
df_values[df_values.A>0]
##取出A列中包含'one','two'的所有數據
df_values[df_values['A'].isin(['one','two'])] 

#給列賦值
##用數組給某列賦值
df_values['A']=np.array([1]*len(df_values))
##根據位置賦值
df_values.loc[:,['a','c']]=[]

8.相關的操作(排序、合併)

#排序操作
##降序按索引排序所有列
df_values.sort_index(axis=1,ascending=False)
##按某列升序排序
df_values.sort_values(by='column_Name',ascending=True)

#多個dataframe的合併操作

##將數據框的行或列合併(concat)
###按列拼接數據,要求列數和列名一樣
pd.concat([df1[:],df2[:],...],axis=0)
###按行拼接數據,行數和行索引相同
pd.concat([df1,df2,...],axis=1)

##append將一行或多行數據添加
df_values.append(df1[:],ignore_index=True) ##將會重新設定index
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章