Python的数据科学函数包(二)——pandas(series dataframe)(loc iloc ix)(csv文件)
pandas
1、pandas數據的存儲相對來說比較簡單,它就只有兩種非常重要的數據類型,一種叫series,一種叫dataframe
? ? ?series是指那些一維的數據,dataframe是指那些二維的數據。也就是說任何一個datafarame其實是好多個series羅列出來的
2、讀取csv數據
不只可以用來讀excel,如果普通的文件想讀成列形式的也可以用它
train_df = pd.read_csv('train.csv') train_df.head()默認是header=0,0,ji 表示第一行為標題行
header=None,即指明原始文件數據沒有列索引,這樣read_csv會自動加上列索引,除非你給定列索引的名字
例如,這是數據集
當train = pd.read_csv(train_path),train是
此時,train[0]就是第一列,train[1]就是第2列
當train = pd.read_csv(train_path, header=0),train是
train = pd.read_csv(train_path,header=None), train是
還可以在pd.read_csv()的時候,規定列名
train = pd.read_csv(train_path,names=COLUMN_NAMES,header=0)
COLUMN_NAMES = ['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Species']train = pd.read_csv(train_path,names=COLUMN_NAMES,header=0)當header=0表示第一行為標題行,又規定了names的時候,標題行就被覆蓋了
head()
.head()
會直接輸出數據(默認是前5行)
print(X.head()) 和 print(X)的結果是一樣的
3. 查看csv數據大小
train_df.shape4. 讀取csv數據轉為numpy 數組
import pandas as pdtrain = pd.read_csv('train.csv') train = train.values.tolist()5、pd.Series(data,index)
pd.DataFrame(data,index,columns)
6、做數據科學的時候,往往把feature放在列上,每一列叫做一個feature
? ? ? ? 每一行叫做一個observation
像不同的列記錄所有人的身高、所有人的體重,所有人的收入,而每一行是一個不同的人
并且如果直接引用的話,會默認選擇列
若要選擇行? df.loc('A')
7. 行列選取
①行(列)選取:df[]。
單維度選取,這種情況一次只能選取行或者列
iris數據集
選取行
#選取0-10行 df = pd.read_csv('dataset/iris.data', header=None) y = df[0:10] print(y)#選取第3行 y = df[3:4] print(y)注意如果寫作y = df[3],這是在選第3列
選取列
#選取3列 df = pd.read_csv('dataset/iris.data', header=None) y = df[3] print(y)#選取第2列,第4列 y = df[[2,4]] print(y)#沒法一次選取多個列②區域選取(多維選取):df.loc[],df.iloc[],df.ix[]。
這種方式可以同時為多個維度設置篩選條件。
pandas以類似字典的方式來獲取某一列的值,比如df[‘A’],這會得到df的A列。如果我們對某一行感興趣呢?這個時候有兩種方法,一種是iloc方法,另一種方法是loc方法。loc是指location的意思,iloc中的i是指integer
loc是根據index來索引,比如下邊的df定義了一個index,那么loc就根據這個index來索引對應的行。
iloc并不是根據index來索引,而是根據行號來索引,行號從0開始,逐次加1。
8、添加列
直接用名稱賦值即可
刪除列 df.drop('new',axis)? ? ? ? ?
axis=0是指行, axis=1是指列的維度
但是這樣刪除只是返回一個臨時的結果,實際df中并沒有刪除列,這是相當于一個double check的機制。可以不在原數據進行操作,df2=df.drop('new',axis)? ? ?
如果的確要刪的話?df.drop('new',axis=1,inplace= True)
9、選擇滿足相關條件的數據
? ? ?選擇W列的值大于0的數據
? ? 選擇W列的值大于0的數據的Y的數據
?選擇W列的值大于0并且Y列的值大于1的數據
10、將另一列的數據當做行名
df.set_index('state')
同樣,如果確定要修改,還需要?df.set_index('state',inplace=True)
11、將數據轉化成DataFrame
12、分組計算
平均值
最大值
標準差? //standard deviation
能計算的都給你計算一遍
13、解決dataframe輸出省略號的問題
pd.set_option('display.max_rows',1000) # 具體的行數或列數可自行設置 pd.set_option('display.max_columns',1000)14.??unique() ?查看某列不同值的個數
查看多少張圖片有標注
print(train_df['image_id'].unique())15. value_counts() ?統計某列不同值分別有幾個
在pandas中,value_counts常用于數據表的計數及排序,它可以用來查看數據表中,指定列里有多少個不同的數據值,并計算每個不同值有在該列中的個數,同時還能根據需要進行排序。
print(train_df['image_id'].value_counts())畫pandas的值的圖要用sns.plot()
?
16. apply()
pandas 的?apply()?函數可以作用于?Series?或者整個?DataFrame
功能是自動遍歷整個?Series?或者?DataFrame, 對每一個元素運行指定的函數。
17. 拆分某一列為好幾列
series內置函數str.split
train_df[['x','y','w','h']] = train_df['bbox'].str[1:-1].str.split(',', expand=True).astype(np.float)18. str轉int
data[['m']] = data[['m']].astype(int)總結
以上是生活随笔為你收集整理的Python的数据科学函数包(二)——pandas(series dataframe)(loc iloc ix)(csv文件)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wps 分节符(连续) 自动变成 分节符
- 下一篇: python两列时间间隔计算器_在pyt