① pandas python nan行怎麼刪除
df.dropna()
② python 在pandas中的 NaN 怎麼樣在計算時當 0 與鄰列相加
Pandas基於兩種數據類型:series與dataframe。
一個series是一個一維的數據類型,其中每一個元素都有一個標簽。如果你閱讀過這個系列的關於Numpy的文章,你就可以發現series類似於Numpy中元素帶標簽的數組。
其中,標簽可以是數字或者字元串。
一個dataframe是一個二維的表結構。
Pandas的dataframe可以存儲許多種不同的數據類型,並且每一個坐標軸都有自己的標簽,可以把它想像成一個series的字典項。
③ python pandas處理excel兩列之和,碰到一個單元格為空就不求和了,怎麼解決(詳見截圖)
表格文件里看起來是空的地方,有時候可能並不是空的,也許會存在一個空格字元。最保險的辦法,先用正則將空格匹配出來,然後全部替換為NULL,再在用pandas讀取的時候指定 (na_values='NULL')就是將NULL認為是nan處理,接下來就可以用dropna()或者fillna()來處理了。
④ 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 的數據帶有空格怎麼處理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 In [3]: import pandas as pd In [4]: a = pd.Series([1,2,3]) In [5]: b = pd.Series([2,3,4]) In [6]: c = pd.DataFrame([a,b]) In [7]: c Out[7]: 0 1 2 0 1 2 3 1 2 3 4 不過pandas直接用列表生成datafram...
⑥ pandas怎麼過濾超過某一范圍的數據
應該是vlookup的典型使用, 用來檢索現有列表信息, 通過客戶名稱檢索該客戶的其他信息.假如A-C列是原始信息, 在E列進行查詢然後在F列顯示相應的信息E1輸入三元 F1輸入函數: =vlookup(E1,A:C,2) 得到的就是對應三元的B列的信息
⑦ python pandas 過濾某列特殊字元求助
改成r="\W"試試
⑧ 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的某個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怎麼根據一個數據框中的值過濾另一個數據框
選中A表的C6到C23 復制 選中B表的C6 點擊選擇性粘貼中的 粘貼鏈接(粘貼按鈕旁邊的小三角形)