導航:首頁 > 凈水問答 > pandas過濾0

pandas過濾0

發布時間:2022-05-10 21:20:14

❶ python中怎麼將dataframe中某列中不含某個字元的數據替換成0

運行環境python3.6

import pandas as pd
d1= ['銅版紙','300g','【啞膜】']
d2= ['銅版紙','300g','【5】']
d3= ['銅版紙','300g','【啞膜】']
d4= ['銅版紙','300g','【1】']
data = pd.DataFrame(data=[d1, d2, d3,d4,],columns=['紙張', '克重','覆膜'])
data['覆膜'] = data['覆膜'].apply(lambda x:0 if '膜' not in x else x)

❷ pandas 怎麼處理表格中的空值

Pandas是Python下一個開源數據分析的庫,它提供的數據結構DataFrame極大的簡化了數據分析過程中一些繁瑣操作。
1. 基本使用:創建DataFrame. DataFrame是一張二維的表,大家可以把它想像成一張Excel表單或者Sql表。Excel 2007及其以後的版本的最大行數是1048576,最大列數是16384,超過這個規模的數據Excel就會彈出個框框「此文本包含多行文本,無法放置在一個工作表中」。Pandas處理上千萬的數據是易如反掌的sh事情,同時隨後我們也將看到它比SQL有更強的表達能力,可以做很多復雜的操作,要寫的code也更少。
說了一大堆它的好處,要實際感觸還得動手碼代碼。首要的任務就是創建一個DataFrame,它有幾種創建方式:
(1)列表,序列(pandas.Series), numpy.ndarray的字典
二維numpy.ndarray
別的DataFrame
結構化的記錄(structured arrays)
(2)其中,二維ndarray創建DataFrame,代碼敲得最少:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4))
df
0 1 2 3
0 0.927474 0.127571 1.655908 0.570818
1 -0.425084 -0.382933 0.468073 -0.862898
2 -1.602712 -0.225793 -0.688641 1.167477
3 -1.771992 -0.692575 -0.693494 -1.063697
4 -0.456724 0.371165 1.883742 -0.344189
5 1.024734 0.647224 1.134449 0.266797
6 1.247507 0.114464 2.271932 -0.682767
7 -0.190627 -0.096997 -0.204778 -0.440155
8 -0.471289 -1.025644 -0.741181 -1.707240
9 -0.172242 0.702187 -1.138795 -0.112005
(3)通過describe方法,可以對df中的數據有個大概的了解:
df.describe()
0 1 2 3
count 10.000000 10.000000 10.000000 10.000000
mean -0.189096 -0.046133 0.394722 -0.320786
std 1.027134 0.557420 1.258019 0.837497
min -1.771992 -1.025644 -1.138795 -1.707240
25% -0.467648 -0.343648 -0.692281 -0.817865
50% -0.307856 0.008734 0.131648 -0.392172
75% 0.652545 0.310266 1.525543 0.172096
max 1.247507 0.702187 2.271932 1.167477
2. 改變cell。
3. group by。
4. 讀寫文件。

❸ pandas 怎麼根據另一個dataframe來篩選

首先我們創建一個DataFrame,該DataFrame包含的數據如下
假如我們想要篩選D列數據中大於0的行版
使用&符號權可以實現多條件篩選,當然是用"|"符號也可以實現多條件,只不過他是或的關系。
假如我們只需要A和B列數據,而D和C列數據都是用於篩選的,可以這樣寫:只返回了AB兩列數據『
我們以上用到的方法都是通過一個布爾索引完成的,我們看一下這樣的運算返回的值是什麼
我們還可以使用insin方法來篩選特定的值,把要篩選的值寫到一個列表裡,如alist
假如選擇D列數據中,有alist中的值的行

❹ 為什麼pandas計算平均值的時候,把0排除了

答:
直接使用平均值函數,0值不包括在計算范圍內
=AVERAGE(數據范圍)
望採納~

❺ python pandas 過濾某列特殊字元求助

改成r="\W"試試

❻ 用自己寫的函數去除Pandas中的特定字元操作無效

目的:去除特種中的特定字元串"\[\]"(即方括弧"[]") df_pos.temp[1] "[['1049571', '泰勒·派瑞']]" 使用如下語句: df_pos["temp"] = df_pos["temp"].str.replace("[","").str.replace("]","") 可以成功消除方括弧,結果如下: 0 '1049571', '泰勒·派瑞' 但是我把這個方法封裝成函數,就沒用了: def pure_str_feature_process(x): x = x.str.replace("[","").str.replace("]","") 執行: pure_str_feature_process(df_pos["temp"]) 結果: 0 [['1049571', '泰勒·派瑞']] 請問下各位朋友,我的問題出在哪裡???還有,如果這個用正則表達式怎麼寫呢?

❼ 如何周全的考慮空數據的情況

摘要 您好,根據您提出的問題

❽ python中利用pandas怎麼處理預設值

null/None/NaN
null經常出現在資料庫中
None是Python中的缺失值,類型是NoneType
NaN也是python中的缺失值,意思是不是一個數字,類型是float
在pandas和Numpy中會將None替換為NaN,而導入資料庫中的時候則需要把NaN替換成None
找出空值
isnull()
notnull()
添加空值
numeric容器會把None轉換為NaN
In [20]: s = pd.Series([1, 2, 3])

In [21]: s.loc[0] = None

In [22]: s
Out[22]:
0 NaN
1 2.0
2 3.0
dtype: float641234567891012345678910

object容器會儲存None
In [23]: s = pd.Series(["a", "b", "c"])

In [24]: s.loc[0] = None

In [25]: s.loc[1] = np.nan

In [26]: s
Out[26]:
0 None
1 NaN
2 c
dtype:

空值計算
arithmetic operations(數學計算)
NaN運算的結果是NaN
statistics and computational methods(統計計算)
NaN會被當成空置
GroupBy
在分組中會忽略空值
清洗空值
填充空值
fillna
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
參數
value : scalar, dict, Series, or DataFrame
method : {『backfill』, 『bfill』, 『pad』, 『ffill』, None}, default None(bfill使用後面的值填充,ffill相反)
axis : {0 or 『index』, 1 or 『columns』}
inplace : boolean, default False
limit : int, default None
downcast : dict, default is None
返回值
filled : DataFrame
Interpolation
replace
刪除空值行或列
DataFrame.dropna(axis=0, how=』any』, thresh=None, subset=None, inplace=False)
參數
axis : {0 or 『index』, 1 or 『columns』}, or tuple/list thereof
how : {『any』, 『all』}
thresh : int, default None
subset : array-like
inplace : boolean, default False
返回
dropped : DataFrame

❾ 怎麼使用Python中Pandas庫Resample,實現重采樣,完成線性插值

#python中的pandas庫主要有DataFrame和Series類(面向對象的的語言更願意叫類) DataFrame也就是
#數據框(主要是借鑒R裡面的data.frame),Series也就是序列 ,pandas底層是c寫的 性能很棒,有大神
#做過測試 處理億級別的數據沒問題,起性能可以跟同等配置的sas媲美
#DataFrame索引 df.loc是標簽選取操作,df.iloc是位置切片操作
print(df[['row_names','Rape']])
df['行標簽']
df.loc[行標簽,列標簽]
print(df.loc[0:2,['Rape','Murder']])
df.iloc[行位置,列位置]
df.iloc[1,1]#選取第二行,第二列的值,返回的為單個值
df.iloc[0,2],:]#選取第一行及第三行的數據
df.iloc[0:2,:]#選取第一行到第三行(不包含)的數據
df.iloc[:,1]#選取所有記錄的第一列的值,返回的為一個Series
df.iloc[1,:]#選取第一行數據,返回的為一個Series
print(df.ix[1,1]) # 更廣義的切片方式是使用.ix,它自動根據你給到的索引類型判斷是使用位置還是標簽進行切片
print(df.ix[0:2])
#DataFrame根據條件選取子集 類似於sas裡面if、where ,R裡面的subset之類的函數
df[df.Murder>13]
df[(df.Murder>10)&(df.Rape>30)]
df[df.sex==u'男']
#重命名 相當於sas裡面的rename R軟體中reshape包的中的rename
df.rename(columns={'A':'A_rename'})
df.rename(index={1:'other'})
#刪除列 相當於sas中的drop R軟體中的test['col']<-null
df.drop(['a','b'],axis=1) or del df[['a','b']]
#排序 相當於sas裡面的sort R軟體裡面的df[order(x),]
df.sort(columns='C') #行排序 y軸上
df.sort(axis=1) #各個列之間位置排序 x軸上
#數據描述 相當於sas中proc menas R軟體裡面的summary
df.describe()
#生成新的一列 跟R裡面有點類似
df['new_columns']=df['columns']
df.insert(1,'new_columns',df['B']) #效率最高
df.join(Series(df['columns'],name='new_columns'))
#列上面的追加 相當於sas中的append R裡面cbind()
df.append(df1,ignore_index=True)
pd.concat([df,df1],ignore_index=True)
#最經典的join 跟sas和R裡面的merge類似 跟sql裡面的各種join對照
merge()
#刪除重行 跟sas裡面nokey R裡面的which(!plicated(df[])類似
df.drop_plicated()
#獲取最大值 最小值的位置 有點類似矩陣裡面的方法
df.idxmin(axis=0 ) df.idxmax(axis=1) 0和1有什麼不同 自己摸索去
#讀取外部數據跟sas的proc import R裡面的read.csv等類似
read_excel() read_csv() read_hdf5() 等
與之相反的是df.to_excel() df.to_ecv()
#缺失值處理 個人覺得pandas中缺失值處理比sas和R方便多了
df.fillna(9999) #用9999填充
#鏈接資料庫 不多說 pandas裡面主要用 MySQLdb
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="mysql",use_unicode=True,charset="utf8")
read_sql() #很經典
#寫數據進資料庫
df.to_sql('hbase_visit',con, flavor="mysql", if_exists='replace', index=False)
#groupby 跟sas裡面的中的by R軟體中dplyr包中的group_by sql裡面的group by功能是一樣的 這里不多說
#求啞變數
miper=pd.get_mmies(df['key'])
df['key'].join(mpier)
#透視表 和交叉表 跟sas裡面的proc freq步類似 R裡面的aggrate和cast函數類似
pd.pivot_table()
pd.crosstab()
#聚合函數經常跟group by一起組合用
df.groupby('sex').agg({'height':['mean','sum'],'weight':['count','min']})

#數據查詢過濾

test.query("0.2
將STK_ID中的值過濾出來
stk_list = ['600809','600141','600329']中的全部記錄過濾出來,命令是:rpt[rpt['STK_ID'].isin(stk_list)].
將dataframe中,某列進行清洗的命令
刪除換行符:misc['proct_desc'] = misc['proct_desc'].str.replace('\n', '')
刪除字元串前後空格:df["Make"] = df["Make"].map(str.strip)
如果用模糊匹配的話,命令是:
rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')]

對dataframe中元素,進行類型轉換

df['2nd'] = df['2nd'].str.replace(',','').astype(int) df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)

#時間變換 主要依賴於datemie 和time兩個包
http://www.2cto.com/kf/201401/276088.html
#其他的一些技巧
df2[df2['A'].map(lambda x:x.startswith('61'))] #篩選出以61開頭的數據
df2["Author"].str.replace("<.+>", "").head() #replace("<.+>", "")表示將字元串中以」<」開頭;以」>」結束的任意子串替換為空字元串
commits = df2["Name"].head(15)
print commits.unique(), len(commits.unique()) #獲的NAME的不同個數,類似於sql裡面count(distinct name)
#pandas中最核心 最經典的函數apply map applymap

❿ python 怎麼修改pandas的某個cell的值

數據缺失
數據缺失在大部分數據分析應用中都很常見,Pandas使用浮點值NaN表示浮點和非浮點數組中的缺失數據,他只是一個便於被檢測出來的數據而已。
from pandas import Series,DataFrame

string_data=Series(['abcd','efgh','ijkl','mnop'])

print(string_data)
print("...........\n")
print(string_data.isnull())12345671234567

Python內置的None值也會被當作NA處理
from pandas import Series,DataFrame

string_data=Series(['abcd','efgh','ijkl','mnop'])

print(string_data)
print("...........\n")

string_data[0]=None
print(string_data.isnull())123456789123456789

處理NA的方法有四種:dropna,fillna,isnull,notnull
is(not)null,這一對方法對對象做出元素級的應用,然後返回一個布爾型數組,一般可用於布爾型索引。
dropna,對於一個Series,dropna返回一個僅含非空數據和索引值的Series。
問題在於DataFrame的處理方式,因為一旦drop的話,至少要丟掉一行(列)。這里解決方法與前面類似,還是通過一個額外的參數:dropna(axis=0,how=』any』,thresh=None),how參數可選的值為any或者all.all僅在切片元素全為NA時才拋棄該行(列)。thresh為整數類型,eg:thresh=3,那麼一行當中至少有三個NA值時才將其保留。
fillna,fillna(value=None,method=None,axis=0)中的value除了基本類型外,還可以使用字典,這樣可以實現對不同列填充不同的值。
過濾數據:
對於一個Series,dropna返回一個僅含非空數據和索引值的Series:
from pandas import Series,DataFrame
from numpy import nan as NA

data=Series([1,NA,3.5,NA,7])

print(data.dropna())123456123456

另一個過濾DataFrame行的問題涉及問題序列數據。假設只想留一部分觀察數據,可以用thresh參數實現此目的:
from pandas import Series,DataFrame, np
from numpy import nan as NA

data=DataFrame(np.random.randn(7,3))

data.ix[:4,1]=NA
data.ix[:2,2]=NA

print(data)

print("...........")

print(data.dropna(thresh=2))

不想濾除缺失的數據,而是通過其他方式填補「空洞」,fillna是最主要的函數。
通過一個常數調用fillna就會將缺失值替換為那個常數值:
from pandas import Series,DataFrame, np
from numpy import nan as NA

data=DataFrame(np.random.randn(7,3))

data.ix[:4,1]=NA
data.ix[:2,2]=NA

print(data)

print("...........")

print(data.fillna(0))

若是通過一個字典調用fillna,就可以實現對不同列填充不同的值。
from pandas import Series,DataFrame, np
from numpy import nan as NA

data=DataFrame(np.random.randn(7,3))

data.ix[:4,1]=NA
data.ix[:2,2]=NA

print(data)

print("...........")

print(data.fillna({1:111,2:222}))

可以利用fillna實現許多別的功能,比如可以傳入Series的平均值或中位數:
from pandas import Series,DataFrame, np
from numpy import nan as NA

data=Series([1.0,NA,3.5,NA,7])
print(data)
print("...........\n")
print(data.fillna(data.mean()))

123456789123456789

檢測和過濾異常值
異常值(outlier)的過濾或變換運算在很大程度上就是數組運算。如下一個(1000,4)的標准正態分布數組:
from pandas import Series,DataFrame, np
from numpy import nan as NA

data=DataFrame(np.random.randn(1000,4))
print(data.describe())

print("\n....找出某一列中絕對值大小超過3的項...\n")
col=data[3]
print(col[np.abs(col) > 3] )

print("\n....找出全部絕對值超過3的值的行...\n")
print(col[(np.abs(data) > 3).any(1)] )

移除重復數據
DataFrame的plicated方法返回一個布爾型Series,表示各行是否是重復行。
from pandas import Series,DataFrame, np
from numpy import nan as NA
import pandas as pd
import numpy as np

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
print(data)
print("........\n")
print(data.plicated())123456789123456789

與此相關的還有一個drop_plicated方法,它用於返回一個移除了重復行的DataFrame:
from pandas import Series,DataFrame, np
from numpy import nan as NA
import pandas as pd
import numpy as np

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
print(data)
print("........\n")
print(data.drop_plicates())123456789123456789

上面的兩個方法會默認判斷全部列,也可以指定部分列進行重復項判斷,假設還有一列值,而只希望根據k1列過濾重復項。
from pandas import Series,DataFrame, np
from numpy import nan as NA
import pandas as pd
import numpy as np

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
data['v1']=range(7)
print(data)
print("........\n")
print(data.drop_plicates(['k1']))1234567891012345678910

plicates和drop_plicates默認保留第一個出現的值組合。傳入take_last=True則保留最後一個:
from pandas import Series,DataFrame, np
from numpy import nan as NA
import pandas as pd
import numpy as np

data=pd.DataFrame({'k1':['one']*3+['two']*4, 'k2':[1,1,2,2,3,3,4]})
data['v1']=range(7)
print(data)
print("........\n")
print(data.drop_plicates(['k1','k2'],take_last=True))1234567891012345678910

閱讀全文

與pandas過濾0相關的資料

熱點內容
雞蛋白醋製作半透膜 瀏覽:866
電離子去疣後如何護理吃啥葯 瀏覽:978
火腿加工廠熬肉廢水如何處理 瀏覽:777
大虎山鎮污水處理廠 瀏覽:684
蒸餾酒純喝 瀏覽:753
耐海水乙烯基酯樹脂 瀏覽:218
偉星前置凈水器哪個品牌好 瀏覽:745
豐田電瓶蒸餾水 瀏覽:797
丙烯酸廢水如何檢測 瀏覽:423
朗行汽車空調濾芯怎麼換 瀏覽:875
寶馬118i空氣濾芯在什麼位置 瀏覽:698
多倫伊利污水處理 瀏覽:842
凈水器ustoac是什麼意思 瀏覽:957
環氧樹脂玻璃鋼一布三塗 瀏覽:535
豆製品水處理設備 瀏覽:879
電熱水壺容易產生水垢 瀏覽:174
樹脂分離塔顯示界面低 瀏覽:78
眉縣污水管網工程項目 瀏覽:841
飲水機進入中國多少年了 瀏覽:145
工業廢水水質如何 瀏覽:50