当前位置: 首页 > news >正文

数据网站怎么做的宠物网站页面设计创意国外

数据网站怎么做的,宠物网站页面设计创意国外,网页设计素材包,wordpress获取访问位置Python基础 数字处理函数 Python提供了用于数字处理的内置函数和内置模块(math)#xff0c;使用内置模块#xff0c;需要先导入 import math。 内置函数math模块abs(-5)返回绝对值math.ceil(2.3)返回不小于x的最小整数divmod(9,4)返回商和余数math.floor(2.3)返回不大于x的…Python基础 数字处理函数 Python提供了用于数字处理的内置函数和内置模块(math)使用内置模块需要先导入 import math。 内置函数math模块abs(-5)返回绝对值math.ceil(2.3)返回不小于x的最小整数divmod(9,4)返回商和余数math.floor(2.3)返回不大于x的最大整数eval(a*a1)返回字符串中的表达式结果math.fabs(-5)返回x的绝对值max(1,2,3,4)返回最大值math.factorial(5)返回非负数x的阶乘min(1,2,3,4)返回最小值math.fmod(9,4)返回x除于y的余数pow(2,3)返回2的3次方等价于2**3math.fsum([0.1,0.1,0.1,0.1])求和比sum更精确round(1,56)四舍五入只有一个参数是返回整数math.gcd(12,8)返回x和y的最大公约数round(1.567,2)四舍五入保留2为小数math.trunc(15.67)返回x的整数部分sum({1,2,3,4})求和math.pi返回π值3.141592653589793 字符串的切片 字符串的切片也称分片它利用索引范围从字符串中获得连续的多个字符即子字符串。字符串切片的基本格式x[ start : end : step]返回字符串x中从偏移量start开始、到偏移量end之前的子字符串切片默认情况下是返回字符串中的多个连续字符可以通过step步长参数来跳过中间的字符。start、end和step参数均可省略start默认为0end默认为字符串长度step默认为1。 x abcdef print(x[1:4]) # 返回偏移量为1到3的字符 bcd print(x[1:]) # 返回偏移量为1到末尾的字符 bcdef print(x[:4]) # 返回从字符串开头到偏移量为3的字符 abcd print(x[:-1]) # 除最后一个字符其他字符全部返回 abcde print(x[:]) # 返回全部字符 abcdef x 0123456789 print(x[1:7:2]) # 返回偏移量为1、3、5的字符 135 print(x[::2]) # 返回偏移量为偶数的全部字符 02468 print(x[7:1:-2]) # 返回偏移量为7、5、3的字符 753 print(x[::-1]) # 将字符串反序返回 9876543210字符串是有序的字符集合可用for循环迭代处理字符串for item in abcdefghijk: print(item,end\t) 字符串处理函数 字符串是 str 类型的对象Python提供了一系列方法用于字符串的处理。常用的字符串处理方法如下 方法名描述len(str)返回 str 的长度即包含的字符个数str(info)将非字符串数据转换为字符串capitalize(str)将字符串第一个字母大写其余字母小写返回新的字符串count(sub[, start[, end]])返回字符串sub在当前字符串的[start, end]范围内出现的次数省略范围时会查找整个字符串startswith(prefix[, start[, end]])判断当前字符串的[start, end]范围内的子字符串是否以sub字符串开始endswith(suffix,[, start[, end]])判断当前字符串的[start, end]范围内的子字符串是否以sub字符串结尾find(sub[, start[, end]])在当前字符串的[start, end]范围内查找子字符串sub返回sub第一次出现的位置没有找到时返回-1format(args)字符串格式化将字符串中用{}定义的替换域依次用参数args中的数据替换print(My name is {0},age is {1}.format(Tome, 23))ljust/rjust(width[, fillchar]) 当字符串长度小于width时在字符串末尾填充fillchar使其长度等于width。默认填充字符为空格lower()/upper()将字符串中的字母全部转换成小写/大写replace(old, new[, count])将当前字符串包含的old字符串替换为new字符串省略count时会替换全部old字符串。指定count时最多替换count次split([sep],[maxsplit])将字符串按照sep指定的分隔字符串分解返回包含分解结构的列表。省略sep时以空格作为分隔符sep.join(iterable)按照sep指定的分割符连接序列对象(iterable)返回拼接后的字符串 日期和时间数据类型 Python标准库中包含用于日期、时间、日历数据的数据类型主要用到datetime、time和calendar模块。 函数说明datetime.datetime.now()获取当前系统时间datetime.date(year,month,day)日期(年、月、日)datetime.time(hour, minute, second, microsecond, tzinfo)时间(时、分、秒、毫秒)datetime.datetime(year, month, day,hour, minute, second, microsecond, tzinfo)日期和时间datetime.timedelta(days0, seconds0, microseconds0, milliseconds0, minutes0, hours0, weeks0)两个datetime的差(日、秒、毫秒)也可以做日期加减运算datetime.tzinfo()用于存储时区信息的基本类型datetime.datetime.strptime(datetime_str, formatter)把字符串日期转为日期对象datetime_obj.strftime(formattter)把日期对象转为指定格式的字符串 import datetime datetime.datetime.now() # 获取当前系统时间 date datetime.date(2019,11,12) # 封装指定日期 print(date.year,date.month,date.day) # 获取年月日 date datetime.time(23,12,12,100) # 封装指定时间 print(date.hour,date.minute,date.second,date.microsecond) # 获取时分秒 datetime.datetime.now()datetime.timedelta(-10) # 日期加减操作 # 日期相差结果注意需要保证类型一致 delta datetime.datetime.now() - datetime.datetime(2019,11,12,23,12,12) # datetime.timedelta(days1479, seconds37384, microseconds61401) delta.seconds # 获取相差的秒数datetime.datetime.strptime(2019-11-12,%Y-%m-%d) # 日期字符串转为日期对象 datetime.datetime.now().strftime(%Y年%m月%d日) # 日期对象转为指定格式的字符串列表 列表是Python中最具灵活性的有序集合对象类型。和字符串不同的是列表具有可变长度、异构以及任意嵌套列表的特点。列表是可变对象支持在原处修改。 列表常量用方括号表示例如[1,2,abc]也可以使用list()函数来创建。 列表基本操作包括创建列表、求长度、合并、重复、迭代、关系判断、索引和分片等。 函数名称说明append(item)在列表末尾添加一个数据del删除列表中指定数据或分片count(item)返回item在列表中出现的次数clear()删除列表中的全部数据insert(index,item)在指定位置插入数据index(item)返回列表中第一个值为item的元素的索引remove(item)用于删除列表中的指定值如果有重复值则删除第1个reverse()将列表中数据的位置反转pop([index])用于删除指定位置的对象省略位置时删除列表的最后一个对象同时返回被删除的对象sort([keyfunc, reverseTrue/False])将列表排序若列表对象全部是数字则将数字从小到大排序。若列表对象全部是字符串则按字典顺序排序。它还支持自定义排序可用key参数指定一个函数sort方法将列表元素作为参数调用该函数用函数返回值代替列表元素完成排序。 # 创建列表 print([1, 2, 3, 4, (a, b), [12, 34]]) # [1, 2, 3, 4, (a, b), [12, 34]] print(list(abcd)) # [a, b, c, d] print(list(range(-2, 3))) # [-2, -1, 0, 1, 2]# 求长度 print(len([1, 2, 3, 4, (a, b), [5, 6]])) # 6# 合并 print([1, 2] [abc, 20])# 重复 print([1, 2] * 5)# 关系判断 print(2 in [1, 2, 3])# 分片 list1 list(range(10)) print(list1[:5]) # [0, 1, 2, 3, 4] print(list1[3:10:2]) # [3, 5, 7, 9] print(list1[10:3:-2]) # [9, 7, 5]list1 [1, 2] del list1[0] # 删除第1个元素 list1.clear() # 清空列表# 排序 price_list [{price: 76}, {price: 99}, {price: 84}] price_list.sort(keylambda item: item.get(price)) print(price_list) # [{price: 76}, {price: 84}, {price: 99}]列表推导式 列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个推导序列的每个元素用其获得的结果作为生成新列表的元素或者根据确定的判定条件创建子序列。 语法格式为[ expr1 for k in L if expr2 ] 元组 元组是一种固定长度、不可变的Python对象序列。元组和字符串一样不可改变即不能给元组的一个独立的元素赋值。元组和列表看起来不同的一点是元组用的是圆括号()而列表用的是方括号[]。 与字符串一样元组之间可以使用 号和 * 号进行运算。 # 创建元组 print((2,)) # 包含一个对象的元组不能缺少逗号 (2,) print(tuple(abcde)) # 参数为可迭代对象 (a, b, c, d, e) print(tuple(item * 2 for item in range(5))) # 使用解析结构创建元组 (0, 2, 4, 6, 8)# 求长度 print(len((1, 2, 3, 4, 5))) # 5# 合并 t1 (1, 2) (ab, cd) (2.45,) # (1, 2, ab, cd, 2.45) print(t1)# 重复 print((1, 2) * 3) # (1, 2, 1, 2, 1, 2)# 关系判断 print(2 in t1) # True# 索引和分片 t2 tuple(range(10)) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) print(t2[1]) # 1 print(t2[-1]) # 9 print(t2[2:5]) # (2, 3, 4)# #元组的拆分 a,b,c (1, 5, 7) print(a, b, c)字典 字典也称映射是一个由键/值对组成的非排序可变集合体。键值对在字典中以下面的方式标记 dict {key1 : value1, key2 : value2 } 键/值对用冒号分割而各个元素之间用逗号分割所有元素都包括在花括号中。值得注意的是字典中的键必须是唯一的只能使用不可变的对象来作为字典的键字典中的键/值对是没有顺序的。 函数名称说明clear()删除全部字典对象copy()复制字典对象get(key[,default])返回键 key映射的值。如果键key不存在返回空值可用default参数指定键不存在时的返回值。pop(key[,default])从字典中删除键值对并返回被删除的映射值。若键不存在则返回default。若键不存在且未指定default参数时删除键会出错。popitem()从字典中删除键值对同时返回被删除的键值对元组。空字典调用该方法会产生KeyError错误。setdefault(key[,default])用于返回映射值或者为字典添加键值对。指定的键key在字典中存在时返回其映射值。若指定的键key不存在则将键值对key:default添加到字典中。省略default时添加的映射值默认为None。update(other)update()方法用于为字典添加键值对。参数other可以时另一个字典或用赋值格式表示的元组。若字典已存在同名的键则该键的映射值被覆盖。items()返回键值对视图视图对象支持迭代操作不支持索引。当字典对象发生改变时字典视图可实时反映字典的改变。keys()返回字典中所有键的视图values()返回字典中全部值的视图 x dict(nameTom, age25) y x # 复制字典对象 yc x.copy() print(y is x, yc is x) # 判断是否引用相同对象 True False# 获取指定key映射的值 print(x.get(name)) # 返回映射值 Tom print(x.get(addr)) # 不存在的键返回空值 None print(x.get(addr, xxx)) # 不存在的键返回指定值 xxx# 获取或添加 print(x.setdefault(name)) # 返回指定键的映射值 Tom print(x.setdefault(sex)) # 键不存在为字典添加“键:值”对映射值默认为None None print(x.setdefault(addr, CQ)) # 添加“键:值”对 CQ print(x) # {name: Tom, age: 25, sex: None, addr: CQ}# 添加或修改 x.update({age: 30, sex: 女}) # 添加“键:值”对并覆盖同名键的映射值 print(x) # {name: Tom, age: 30, sex: 女, addr: CQ} x.update(nameMike) # 修改映射值 x.update(code110, tel123456) # 添加“键:值”对 print(x) # {name: Mike, age: 30, sex: 女, addr: CQ, code: 110, tel: 123456}# 删除指定key的键值对象 print(x.pop(name)) # 删除键并返回映射值 Mike print(x.pop(id, xxx)) # 删除不存在的键返回default参数值 xxx # print(x.pop(other)) # 删除不存在的键未指定default参数出错 KeyError: other# 删除字典元素并以元组的形式返回删除的元素如果字典为空则报错 KeyError: popitem(): dictionary is empty print(x.popitem()) # (tel, 123456)# 返回 键值对 视图 entity x.items() # dict_items([(age, 30), (sex, 女), (addr, CQ), (code, 110)]) print(list(entity)) # [(age, 30), (sex, 女), (addr, CQ), (code, 110)]# 返回 键 视图值 视图 keys x.keys() # dict_keys([age, sex, addr, code]) vals x.values() # dict_values([30, 女, CQ, 110])集合 集合是一个由唯一元素组成的非排序集合体。也就是说集合中的元素没有特定顺序集合中没有重复项。可以使用大括号{ }或者set()函数创建集合但是创建一个空集合必须用 set()因为{ }是用来创建一个空字典。 集合对象元素的值不支持修改但是可以复制集合、为集合添加或删除元素。 函数名称说明copy().复制集合对象remove(item)/discard(item)删除指定元素删除不存在时会报错/删除不存在时不会报错add(item)添加一个元素pop()随机删除一个元素并返回该元素update({item1,item2,...})添加多个元素clear()删除集合中的全部元素 x {1, 2} print(x.copy()) # 复制集合对象 x.add(abc) # 为集合添加一个元素 x.update({10, 20}) # 为集合添加多个元素 x.remove(10) # 从集合中删除指定元素,删除不存在元素时会报错 x.discard(15) # 移除元素 print(x.pop()) # 从集合中随机删除一个元素并返回该元素 1 x.clear() # 删除集合中的全部元素 set()集合元素是不可改变的因此不能将可变对象放入集合中集合、列表和字典对象均不能加入集合元组可以作为一个元素加入集合。 Series Series是一个类似一维数组的对象它能够保存任何类型的数据主要由一组数据和与之相关的索引两部分构成。 Pandas的Series类对象的创建语法pandas.Series(dataNone, indexNone, dtypeNone, copyFalse) data表示传入的数据。index表示索引唯一且与数据长度相等默认会自动创建一个从0~N的整数索引。dtype数据的类型。copy是否复制数据默认是False。 s1 pd.Series([1,2,3,4,5],index[a,b,1,8,9],namenums) s1.index # Index([a, b, 1, 8, 9], dtypeobject) s1.values # array([1, 2, 3, 4, 5], dtypeint64) type(s1.values) # numpy.ndarray s1 10 s1.sum() s1[8] # 通过索引取值 s1[s13] # 通过条件取值Series常用方法 Series.unique()去除重复元素Series.nunique()统计去重后的元素个数Series.isnull()检测那些元素为空为空则返回TrueSeries.notnull()检测那些元素为非空不为空的返回Ture DataFrame DataFrame是一个类似于二维数组或表格的对象它每列的数据可以是不同的数据类型。与Serise的结构相似DataFrame的结构也是由索引和数据组成的不同的是DataFrame的索引不仅有行索引还有列索引数据可以有多列。 Pandas的DataFrame类对象的创建语法pandas.DataFrame(dataNone, indexNone, columnsNone, dtypeNone, copyFalse) index行标签。若不设置该参数则默认会自动创建一个从0~N的整数索引。columns列标签。若不设置同样会自动创建一个从0~N的整数索引。 DataFrame常用属性和方法 df.head() 默认获取前5行df.head(n) 获取前n行df.tail() 默认获取后5行df.tail(n) 获取后n行df.sample(n) 随机抽取n行显示df.sample(frac0.6) 随机抽取60%的行df.info() 获取对象中元素的完整信息包括行/列标签、数据类型、是否有空值、占用的内存大小等df.index 获取所有行标签df.columns 获取所有列标签df.values获取所有元素的值df.T 对象中元素的行/列数据转换 DataFrame数据的查询 在数据分析中选取需要的数据进行分析处理是最基本的操作在Pandas中通过索引完成数据的选取除了使用之前学过的切片还可以使用如下方法。 df.loc[行索引名称或条件[, 列索引名称]]基于标签索引用于按标签名称或条件选取数据。当执行切片操作时既包含起始索引也包含结束索引。 emp_df.loc[0:2,[job,sal]] emp_df.loc[emp_df.sal1500, [ename,job,sal]] emp_df.loc[0:3,mgr:sal]布尔选择对行数据可以使用条件进行过滤多条件的逻辑运算符使用、|、!、 并使用圆括号来明确指定条件的优先级避免歧义。 emp_df.loc[(emp_df.sal1500) (emp_df.sal3000), [ename,sal,job]] emp_df[(emp_df.sal1500) (emp_df.sal3000)][[ename,sal]]df.iloc[行索引位置列索引位置]只能使用整数索引不能使用标签索引来选取数据。当执行切片操作时包含起始索引也包含结束索引。 emp_df.iloc[2:5, 2:5]df.query(expr, inplaceFalse)使用类似于SQL的表达式筛选数据并返回筛选后的结果注意在使用的列名中的空格要用_替换字段名区分大小写且等于判断必须使用双等号。 expr: 字符串形式的SQL表达式用于过滤数据。inplace: 如果是的话在原始数据框中进行修改 emp_df.query(sal1500 and jobMANAGER)data.columns [column.replace( , _) for column in data.columns]把列名中的空格替换为下划线 函数应用与映射 在数据分析时经常会对数据进行较复杂的运算此时需要定义函数定义好的函数可以应用到Pandas数据中有三种方法可以实现。 map将函数套用到Series的每个元素中。参数可以传递字典进行指定数据1对1映射替换。 apply将函数套用到DataFrame的行与列上行与列通过axis参数设置。也可以作用于Series上效果比map好。 applymap将函数套用到DataFrame的每个元素上。 排序 在数据处理中数据的排序也是常见的一种操作。由于Pandas中存放的是索引和数据的组合索引它既可以按索引进行排序也可以按数据进行排序。 df.sort_index(axis0,ascendingTrue,inplaceFalse)按索引排序该方法可以用行索引或者列索引进行排序。 axis轴索引0表示index即按行排序1表示columns即按列排序。ascending是否升序排列默认为True表示升序。inplace表示对数据进行排序不创建新的实例。 df.sort_values(by,axios0,ascendingTrue,inplaceFalse,na_positionlast)按值排序。 by表示排序的列。np_position表示NaN的值放在开头(first)还是最后(last)默认是最后。 # DataFrame中指定列排序 emp_df.sort_values(sal,inplaceTrue) # Series排序 emp_df.sal.sort_values(ascendingFalse)数据聚合-aggregate agg、aggregate方法都支持对每个分组应用某个函数包括Python内置函数或自定义函数。同时这两个方法也能直接对DataFrame进行函数应用操作。 df[sal].agg([sum,max,min,mean]) df[sal].agg([(总薪资,sum),(平均薪资,mean)]) df[sal].agg({总薪资,np.sum,平均薪资,np.mean})# agg返回一个聚合分组 df[[deptno,sal]].groupby(deptno).agg(np.sum)# agg返回两个聚合分组 result df[[deptno,sal]].groupby(deptno).agg([np.sum,np.mean]) result.sal[sum]# 自定义函数 def count(item):return len(item)emp_df.groupby(deptno)[sal].agg([np.sum,np.max,np.mean,count])分组运算-transform agg是将函数应用于每一列返回分组后的聚合结果而transform方法可以将运算分布到每一行类似于窗口函数在求比例的时候比较有用。 emp_df.groupby(deptno)[sal].agg(np.mean)# 求每个员工薪资占部门总薪资的百分比 result_df emp_df.groupby(deptno)[[deptno,sal]].transform(np.sum) result_df[emp_sal] emp_df[sal]# # 求每个部门中员工薪资占部门总薪资的百分比 dept_total_sal emp_df.groupby(deptno)[sal].transform(np.sum) emp_df[dept_total_sal] dept_total_sal round(emp_df.sal / emp_df.dept_total_sal * 100,2).astype(string) %加减时间数据 时间数据的算术运算在现实中随处可见例如2020年1月1日减一天就是2019年12月31日。pandas的时间数据和现实生活中的时间数据一样可以做运算。这时就涉及Pandas的**Timedelta**类。 Timedelta是时间相关类中的一个异类不仅能够使用正数还能够使用负数表示单位时间如1s、2min、3h等。使用Timedelta类配合常规的时间相关类能够轻松实现时间的算术运算。 在Timedelta类的时间周期中没有年和月所有周期名称、对应单位及其说明如下表 周期名称单位说明周期名称单位说明weeks无星期secondss秒daysD天millisecondsms毫秒hoursh小时microsecondsus微妙minutesm分nanosecondsns纳秒 pd.Timedelta(1 days) # Timedelta(1 days 00:00:00) pd.Timedelta(1 days 2 hours) # Timedelta(-2 days 23:57:57) pd.Timedelta(pd.offsets.Second(2)) # Timedelta(0 days 00:00:02) pd.Timedelta(pd.offsets.Minute(-2)) # Timedelta(-1 days 23:58:00)# 时间加减 result music_df[date] pd.Timedelta(1 days) result.head(3)Pandas高级接口 Series对象和DataFrame的列数据提供了cat、dt、str三种属性接口分别对应分类数据、日期时间数据和字符串数据通过这几个接口可以快速实现特定的功能非常快捷。 .dt日期时间数据 .dt 属性主要用于处理日期时间数据。当你有一个包含日期时间对象的 Series 或 DataFrame 列时你可以使用 .dt 访问器来执行各种日期和时间相关的操作如提取年份、月份、日期、时间等。 pandas.to_datetime(date) 将数据列表中的 Series 列转化为 datetime 类型。series.dt.strftime(%Y-%m-%d %H:%M:%S)将日期数据转换为指定格式的字符串。series.dt.date/year/month/day/hour/time/quarter/weekday提取日期类型数据的年 / 月 / 日 / 时 / 分 / 秒 / 季度 / 星期。 import pandas as pd # 创建一个包含日期时间的Series s pd.Series(pd.date_range(2023-01-01, periods5)) # 使用.dt属性提取年份 print(s.dt.year) # 提取月份、日期等 print(s.dt.month) print(s.dt.day)dt常用方法 1. 提取日期时间组件- dt.year提取年份。- dt.month提取月份。- dt.day提取日期。- dt.hour提取小时对于 datetime 对象。- dt.minute提取分钟对于 datetime 对象。- dt.second提取秒对于 datetime 对象。- dt.microsecond提取微秒对于 datetime 对象。 2. 日期时间的格式化- dt.strftime(date_format)将日期时间对象格式化为字符串。例如df[date].dt.strftime(%Y-%m-%d) 会将日期时间列格式化为 YYYY-MM-DD 的形式。 3. 日期时间的属性- dt.date返回日期时间对象的日期部分只包含年月日。- dt.normalize()将日期时间对象规范化为午夜00:00:00。- dt.time返回日期时间对象的时间部分只包含时分秒。 4. 日期时间的计算和判断- dt.weekday 或 dt.weekday_name返回日期是星期几0 表示星期一6 表示星期日或返回星期几的字符串名称。- dt.week 或 dt.weekofyear返回日期是一年中的第几周。- dt.dayofweek返回日期是星期几0 表示星期一6 表示星期日与 dt.weekday 相同但返回的是整数。- dt.dayofyear返回日期是一年中的第几天。- dt.quarter返回日期是第几季度1 到 4。- dt.is_leap_year判断年份是否为闰年。- dt.is_month_start、dt.is_month_end、dt.is_quarter_start、dt.is_quarter_end、dt.is_year_start、dt.is_year_end判断日期是否是一个月、季度或年的开始或结束。 5. 日期时间的算术运算- 你可以对日期时间进行算术运算如加法、减法以调整日期时间。例如df[date] pd.Timedelta(days1) 会将日期时间列中的每个日期增加一天。 6. 时间差- 你可以使用 dt.diff() 来计算两个连续日期时间之间的差异返回一个包含时间差的 Series。.str字符串数据 .str 属性用于处理字符串数据。当你有一个包含字符串的 Series 或 DataFrame 列时.str 访问器提供了许多用于字符串操作的便捷方法如字符串切片、大小写转换、查找和替换等。 import pandas as pd # 创建一个包含字符串的Series s pd.Series([apple, banana, cherry, date]) # 使用.str属性转换为小写 print(s.str.lower()) # 查找并替换字符串中的子串 print(s.str.replace(a, o)) # 使用.str.contains检查是否包含某个子串 print(s.str.contains(a))str常用方法 1. 大小写转换- str.lower(): 将字符串转换为小写。- str.upper(): 将字符串转换为大写。- str.capitalize(): 将字符串的首字母转换为大写其余部分转换为小写。- str.swapcase(): 反转字符串中所有字母的大小写。 2. 字符串的匹配和查找- str.contains(pattern, [caseTrue], [nanan], [regexTrue]): 判断字符串是否包含指定的子串或正则表达式模式。- str.startswith(pat, [nanan]) 和 str.endswith(pat, [nanan]): 判断字符串是否以指定的前缀或后缀开始或结束。- str.find(sub[, start[, end]]) 和 str.rfind(sub[, start[, end]]): 查找子串在字符串中的位置rfind从右向左查找。 3. 字符串的替换- str.replace(pat, repl[, n-1[, caseTrue[, regexFalse[, flags0]]]]): 替换字符串中的子串或正则表达式模式。 4. 字符串的分割和连接- str.split(patNone, n-1, expandFalse): 使用指定的分隔符将字符串分割为子串列表。- str.rsplit(patNone, n-1, expandFalse): 从右向左分割字符串。- str.cat(othersNone, sepNone, na_repNone, join_axesNone): 连接多个字符串。 5. 字符串的切片和提取- str.slice(startNone, stopNone, stepNone): 提取字符串的子串类似于Python的切片操作。- str.slice_replace(startNone, stopNone, replNone): 替换字符串中指定范围的子串。- str.get(i): 获取指定位置的字符只能获取一个。- str.extract(pat, expandNone): 使用正则表达式从字符串中提取匹配项。 6. 字符串的修改和清理- str.strip([to_strip]), str.lstrip([to_strip]), str.rstrip([to_strip]): 删除字符串两端、左侧或右侧的指定字符默认为空白字符。- str.zfill(width): 使用零填充字符串的左侧直到达到指定的宽度。- str.pad(width, sideleft, fillchar ): 在字符串的左侧、右侧或两侧填充指定的字符直到达到指定的宽度。- str.wrap(width, **kwargs): 将字符串在指定的宽度处换行。- str.justify(width, modeleft, fillchar ): 对字符串进行对齐操作。 7. 字符串的长度和计数- str.len(): 返回字符串的长度。- str.count(pat, [start[, end]]): 返回子串在字符串中出现的次数。 8. 字符串的排序和比较- str.sort_values(): 当在DataFrame中使用时可以根据字符串列的值对行进行排序。- str.compare(other, na_equalityNone): 比较两个字符串对象是否相等。数据清洗 数据清洗是一项复杂且繁琐的工作同时也是整个数据过程中最为重要的环节。 数据分析的目的在于提高数据质量将脏数据(没有实际意义、格式非法、不完整的、有噪声和不一致的数据)清洗干净使原数据具有完整性、唯一性、权威性、合法性、一致性等特点。Pandas中常见的数据清洗操作有空值和缺失值的处理、重复值的处理、异常值的处理、统一数据格式等。 空值和缺失值的处理 一般空值使用None表示缺失值使用NaN表示。Pandas中提供了一些用于检查或处理空值和异常值的函数其中isnull和notnull()函数可以判断数据集中是否存在空值和缺失值对于缺失数据可以使用dropna()和fillna()方法进行删除和填充。 Series/DataFrame.isnull()/pandas.isnull(obj)检查空值对象。一旦发现数据中存在NaN或None则将这个位置标记为True否则就标记为False。Series/DataFrame.notnull()/pandas.notnull(obj)检查非空值对象。一旦发现有空值或缺失值时返回False。DataFrame.any(axis0)/DataFrame.all(axis0)指定列或行中是否有指定数据或者全部数据。可配合空判断检测所在行或列是否有空值。 df.notnull().all(axis1) / df.isnull().any(axis1) / df.loc[~(df.isnull().any(axis1))]检测数据行中是否有缺失数据,~是取反。indexs df.loc[df.isnull().any(axis1)].indexdf.drop(labesindexs, axis0)drop开头的axis和其他类型的axis的取值刚好相反。 Series/DataFrame.dropna(axis0, howany, threshNone, subsetNone, inplaceFalse)删除含有空值或缺失值的行或列。 axis确定过滤行或列取值可以为0或index、1或columns默认是0。how确定过滤的标准取值可以为any表示如果存在则删除该行或列、all则需要所有值都是NaN默认是any。thresh表示有效数据量的最小要求。若传入了2则是要求该行或该列至少有两个非NaN值时将其保留。subset表示在特定的子集中寻找NaN。 Series/DataFrame.fillna(valueNone, methodNone, axisNone, inplaceFalse)填充空值或缺失值。 value用于填充的数值。method表示填充方式默认值为None取值有pad/ffill表示用缺失值的前面的一个值填充、backfill/bfill表示缺失值后面一个值填充。注意method参数不能与value参数同时使用。 # 测试数据 df pd.DataFrame({类别:[小说, 散文随笔, 青春文学, 传记],书名:[np.nan, 《皮囊》, 《旅程结束时》, 《老舍自传》],作者:[老舍, None, 张其鑫, 老舍]}) # 空值和缺失值检测 pd.isnull(df[书名]) # df.isnull() pd.notnull(df[书名]) # df.notnull() df[pd.isnull(df[书名])] # 获取书名为空的数据 df.isnull().all(axis1) # 获取全部为空的行 df.isnull().any(axis1).sum() # 含有缺失值的行有多少个# 空值和缺失值删除 df.dropna(subset[书名])# 空值和缺失值填充 df.fillna(未知) # 使用【未知】填充缺失值和空值 df.fillna({书名:《未知》,作者:未知}) # 指定具体列的填充数据 df.fillna(methodbfill) # 使用缺失值的后一个值填充重复值的处理 当数据中出现了重复值在大多数情况下需要进行删除。 Pandas提供了两个函数专门用来处理数据中的重复值分别为duplicated()和drop_duplicates()方法。 duplicated(subsetNone, keepfirst, inplaceFalse)用于标记是否有重复值只要两条数据中所有条目的值完全相等就判断为重复值标记为True。 subset用于识别重复的列标签或列标签序列默认识别所有的列标签。keep删除重复项并保留第一次出现的项取值可以为first(除第一次出现外其余相同的都标记重复)、last或False(所有相同的都标记为重复)。 drop_duplicates()用于删除重复值判断标准与duplicated()一致。Series.unique()去除重复元素Series.nunique()统计去重后的元素个数Series.value_counts()统计不同元素出现的次数Series.map({val1:val2,val3:val4})映射把一个数据映射为另一个数据返回一个新的Series列。参数可以是字典也可以是lambda函数 df pd.DataFrame({id: [1, 2, 3, 4, 4, 5],name: [小铭, 小月月, 彭岩, 刘华, 刘华, 周华],age: [18, 18, 29, 58, 58, 36],height: [180, 180, 185, 175, 175, 178],gender: [女, 女, 男, 男, 男, 男]})df.duplicated(keepFalse) # 检查是否有重复值标记所有重复行 df.drop_duplicates(keepfirst) # 删除后一个重复行异常值的处理 异常值是指样本中的个别值其数值明显偏离它所属样本的其余观测值。异常值的存在会严重干扰数据分析的结果因此经常要检验数据中是否有输入错误或含有不合理的数据。在数据统计方法中一般常用散点图、箱线图等方式检测异常值。 df pd.DataFrame(np.arange(20),columns[X]) df[Y] df[X] * 1.5 2 df.iloc[3,1] 48 df.iloc[18,1] 40 df.plot(kindscatter,xX,yY,gridTrue)df pd.DataFrame({A:[1,2,3,4],B:[2,3,25,2],C:[1,4,7,4],D:[1,5,30,3]}) df.boxplot()# 获取异常值 fig df.boxplot(columnB,return_typedict) min fig[caps][0].get_ydata()[0] # 下界值 max fig[caps][1].get_ydata()[0] # 上界值 df[df[B] max]
http://www.ho-use.cn/article/10819110.html

相关文章:

  • 国外网站域名备案传奇辅助网站怎么建设
  • 上海 企矩 网站建设怎么给企业做推广
  • 安徽专业网站建设创新用flash做的网站
  • seddog站长之家学校网站开发实际意义
  • 柳州做网站公司wordpress友链代码
  • dz网站开发新乡网站推广公司
  • 医院做网站备案需要哪些资料中小企业为什么要建网站
  • 建网站的公司大全网站内容设计是什么
  • 做做网站下载免费网上做网站
  • 企业网站建设应该怎么做自助建站整站源码
  • 视频网站开发流程wordpress音视频播放器
  • 绵阳专业网站建设网站做xss过滤
  • 花生壳如何做网站kalium wordpress
  • 长沙高端网站开发九一制作网站
  • 怎么查网站建设是哪家公司建成区违法建设治理网站
  • 高端网站有哪些优势php 网站响应时间
  • 芬兰网站后缀衡水网站排名优化公司
  • 简单网站开发实例成都seo优化
  • 英文网站一般用什么字体苏州工业园区公共资源交易中心
  • 上海网站推广优化公司汕头建设吧 百度贴吧
  • 万网域名证书网站架构优化
  • 个人简介网站源码股票交易网站建设
  • 网站设计三把火科技谁会写网站代码
  • 怎样做二维码网站北京建设网站图片
  • 有哪些可以免费推广的网站互联网营销师怎么报考
  • 建设高校网站的现实意义绍兴seo网站管理
  • 公司网站建设的项目工作分解结构wordpress 手机不显示
  • 网站建设费用有哪些北京海淀区大学
  • 基本的网站开发技术路线中企z云邮企业邮箱登录
  • 河北建筑网站台州平面设计公司