导航:首页 > 净水问答 > 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相关的资料

热点内容
净水器里的除垢球放在哪里 浏览:297
小学校人均污水量标准 浏览:925
含盐量高的废水怎么处理 浏览:394
废水中的氯根对人体有什么危害 浏览:691
硅溶胶去钠离子 浏览:409
山西省人民医院污水处理站 浏览:531
污水rbcod什么意思 浏览:872
甘肃工业废水氨氮超标怎么办 浏览:584
汽油过滤器滤芯怎么换 浏览:542
关于半透膜的实验 浏览:480
小霸王饮水机怎么调时间 浏览:565
mvr废水处理设备原理是什么 浏览:455
尼龙纤维是半透膜吗 浏览:671
过滤芯片型的叫什么电感 浏览:215
树脂干燥的坏处 浏览:47
荒废水田能干什么 浏览:538
鸡蛋清能溶于蒸馏水吗 浏览:624
天津滤芯厂在哪里 浏览:563
离子交换器树脂装填量 浏览:149
饮可净你选择净水器的初衷是什么 浏览:542