python 第二章 資料處理

2021-10-08 13:54:21 字數 4646 閱讀 6835

1、去除重複值

(1)利用pdandas的dataframe 中的df.duplicated() 顯示是否有重複值,重複則為true,沒有重複則為false。

df.duplicated()

df.duplicated(「某列」)

(2)再利用drop.duplicates返回去除重複值的dataframe。

df.drop_duplicated(「某列」)

列子:#去重複值

import pandas as pd

df=pd.read_csv(「000014.sz.csv」,encoding=「utf-8」)

df.duplicated()

print(df.duplicated(「close」))

print(df.drop_duplicates(「close」))

2、缺失值處理

**(1)缺失值的識別

表示 nan.

使用.isnull和.notnull函式來判斷是否缺失。

(2)刪除有缺失值的行

df.dropna()

(3)填充

1)用其他值來填充缺失值

df.fillna(「某值」)

2)用前乙個值來代替缺失值

df.fillna(method=「pad」) #如果缺失值在第一行,沒有前乙個值,故不能填充

3)用後乙個值來代替缺失值

df.fillna(method=「bfill」)#如果缺失值在最後一行,沒有後乙個值,故不能填充

4)用平均值來填充

df.fillna(df.mean())

(4)刪除左右或者指定的字元預設為刪除空格,也可以帶引數

str.strip()

刪除右邊的字元 df[「列名」].str.rstrip()

刪除左邊的字元 df[「列名」].str.lstrip()

刪除 邊的某」字元 df[「列名」].str.lstrip(「某字元」)

例子:import pandas as pd

df=pd.read_csv(「000014.sz.csv」,encoding=「utf-8」)

#檢視顯示缺失值

print(df.isnull())#缺失的表示為true

print(df.notnull())#缺失的表示為false

#去除有缺失值的行

print(df.dropna())#去除有缺失值的行

#填充print(df.fillna(method=「pad」))#如果缺失值在第一行,沒有前乙個值,故不能填充

print(df.fillna(method=「bfill」))#如果缺失值在最後一行,沒有後乙個值,故不能填充

print(df.fillna(df.mean()))#用平均值來填充

df.fillna(df.mean()[「open」:「amount」])#用後面列出的"amount"平均值來填充"open"~~*## 不能用

df.fillna()#用字典來代替

print(df[「ts_code」].str.rstrip(「z」)) 刪除右邊的「z」字元

df[「列名」] .str.slice()

import pandas as pd

df=pd.read_csv(「000014.sz.csv」,encoding=「utf-8」)

#一、字段抽取 str.slice()

#先轉換為字元型別

df[「trade_date」]=df[「trade_date」].astype(str)

print(df[「trade_date」])

#抽取某列的前三位

print(df[「trade_date」].str.slice(0,3))#切記不要漏掉str

print(df[「trade_date」].str.slice(2,4))#抽取某列的三四位

#二、字段拆分 split()

df[「列名」] .str.split(「分隔符」)

dff=df[「trade_date」].str.split(「0」)

print(dff)#切記不要漏掉str。用分隔符。

#新增列名

dff.columns=[「a」,「b」,「c」,「d」]

print(dff)

dfff=df.set_index(「trade_date」)

print(dfff)

1、根據一定條件抽取資料

#條件有

「」「比較大小

範圍between(n,m)

空值運算df.「某列」.null()

字元匹配 str.contains(「列名」,na=false)

邏輯運算 & | not

「」」print(df[df.high>9])#比較大小

print(df[df.high.between(9,10)])#範圍between(n,m)

print(df[df.open.isnull()])#有空值的行

print(df[df.open.notnull()])#不是空值的行

print(df[df.ts_code.str.contains(「000015.sz」,na=false)]) #某列包含某字 na不明白

print(df[df.ts_code.str.contains(「000015.sz」,na=true)])#某列包含某字 na不明白

2、隨機取樣

np.random.randit(開始數,結束數,個數)

模型 1

df[df.列名》=某數] & df[df.列名、,=某數]

模型2r=np.random.randit(0,10,3)

print®

df.loc[r,:]

例子:import pandas as pd

import numpy as np

import random

df=pd.read_csv(「000014.sz.csv」,encoding=「utf-8」)

r=np.random.randint(0,10,3)

print®

print(df.loc[r,:])

3、通過索引抽取資料

df.loc

例子:import pandas as pd

import numpy as np

import random

df=pd.read_csv(「000014.sz.csv」,encoding=「utf-8」)

df=df.set_index(「trade_date」)

print(df)

#取得區間行,竟然加不加引號都一樣

print(df.loc[20200220:20200218])

print(df.loc[「20200220」:「20200218」])

print(df.iloc[0:2])

#如上,loc為字串索引,iloc為索引號索引()

#取得某行和某行,有間隔的,要多加乙個中括號,形成列表,不然會出錯。

print(df.loc[[20200220,20200218]])

#取得某列的所有行,記得前面的冒號和逗號

print(df.loc[:,「open」])

import pandas as pd

#建立乙個列表

index_loc=[「a」,「b」]

index_iloc=[1,2]

data=[[1,2,3,4],[5,6,7,8]]

columns=[「one」,「two」,「three」,「four」]

df1=pd.dataframe(data=data,index=index_loc,columns=columns)

df2=pd.dataframe(data=data,index=index_iloc,columns=columns)

print(df1)

print(df1.ix[「a」])

print(df2)

4、字典資料抽取

1)import pandas as pd

d1=a1=pd.dataframe.from_dict(d1,orient=「index」)# 以key為索引

print(a1)

a1.index.name=「key」 #索引命名

b1=a1.reset_index() #以預設索引重新增加索引

b1.columns=[「key」,「value」] #重定義列名

print(b1)

2)鍵 值等長

import pandas as pd

d1=a1=pd.dataframe(d1)# 以key為索引

print(a1)

a1.index.name=「key」 #索引命名

a1.columns=[「key」,「value」] #重定義列名

print(a1)

以1)為列的重新命名

a1.index.name=「key」 #索引命名

b1=a1.reset_index() #以預設索引重新增加索引

a1.columns=[「nn」,「value」,「nn」] #重定義列名

print(a1)

3)鍵 值不等長

需要 series 格式

C語言 第二章 簡單的資料處理(一)

摘要 1.如何輸出資料 2.定義變數 3.簡單的運算 如何輸出資料 例一 includeint main 該 的執行結果為 the sum is 3printf the sum is d n 1 2 分析 輸出的內容為雙引號中的內容,其中 d處輸出的是逗號後1 2的結果資料。高階1 下面我們來看乙個...

python第二章上機實踐 演算法第二章上機實踐報告

1.實踐題目名稱 找第k小的數 2.問題描述 在n 1 n 1000 個無序的整數中找出第k小的數,且時間複雜度為o n 3.演算法描述 int partition int a,int left,int right 函式功能 將輸入的陣列進行排序,排序後的陣列需要滿足 基準左邊的數都小於基準,基準右...

python第二章上機實踐 第二章上機實踐報告

設計乙個平均時間為o n 的演算法,在n 1 n 1000 個無序的整數中找出第k小的數。輸入格式 輸入有兩行 第一行是n和k,0 第二行是n個整數 輸出格式 輸出第k小的數 輸入樣例 在這裡給出一組輸入。例如 10 4 2 8 9 0 1 3 6 7 8 2 輸出樣例 在這裡給出相應的輸出。例如 ...