import pandas as pd
#创建dataframe第一种方式,使用相等长度列表的字典创建
# df = pd.DataFrame({'x1':[1,2,3], 'x2':[4,5,6]})
# df2 = pd.read_excel('yyy.xlsx')
df3 = pd.read_excel('chuli001.xlsx')
# print(df2.index, df2.columns, df2.values)
#df2.at[0, '空气质量等级'] = '优'
#fiter_ = df2['空气质量指数' ] == 80
#print(df2[fiter_])
# print(df2['空气质量等级'][2])
# print(df2.at[2, '空气质量等级'])
# print(df2.head(3), df2.tail(3))
# print(df2[ ['日期','天气' ,'空气质量指数'] ])
print("----------------------")
print(df3)
#删除第0行,默认是axis=0, 删除第'性别'列,axis=1表示列操作
print(df3.drop(0) , df3.drop('性别', axis = 1))
print(df3['序号'].count())
print( round(df3['语文'].sum() / df3['语文'].count(), 2) , round( df3['语文'].mean() , 2) , df3['语文'].max(), df3['语文'].min() )
print(df3['语文'].describe() )
print("+++++++++++++++++++++++++++")
print( round (df3.groupby('性别')['语文'].mean(), 2) )
print( round (df3.groupby('性别')['语文'].describe(), 2) )
print("===========================")
#sort_index
#先按序号降序排,再按语文,数学升序排序
# for i in df3.sort_values( ['序号'] , ascending = True ).sort_values( ['语文','数学'] , ascending = False ).groupby('性别') :
# print(i)
print(df3)
print(df3.sort_values('语文', inplace = True) )
print(df3)
groupby里的as_index属性,意思是否作为新分组的属性
import pandas as pd
test = {"group_id":[1,1,2,3,3,3,4,4],"age":[22,15,27,35,28,17,45,29],
"status":[1,2,3,4,5,6,7,8]}
df = pd.DataFrame(test)
print(df)
print(df.groupby(['group_id'] ).mean() , type(df.groupby(['group_id'] ).mean() ))
print(df.groupby(['group_id'] ,as_index = False ).mean())
收起
新鲜事原文
王老师的头像王老师(新天地校区)
1天前 所有人可见
#########################Series
import pandas as pd
#一维数据 Series
s1 = pd.Series([1,2,3,4,5], index=['a', 'b', 'c' , 'd', 'e' ])
s2 = pd.Series({2:3 , 3:4})
#Series的属性
print(s2.values, s2.index)
for i in s2.values:
print(i)
#########################DataFrame
import pandas as pd
#创建dataframe第一种方式,使用相等长度列表的字典创建
df = pd.DataFrame({'x1':[1,2,3], 'x2':[4,5,6]})
df2 = pd.read_excel('yyy.xlsx')
# print(df2.index, df2.columns, df2.values)
df2.at[0, '空气质量等级'] = '优'
fiter_ = df2['空气质量指数' ] == 80
print(df2[fiter_])
# print(df2.head(3), df2.tail(3))
展开
新鲜事原文
赵卓涵的头像赵卓涵(新天地校区)
3天前 所有人可见
颗粒付款链接哦费劲哦i公斤哦哦攻击人家发
不顾功夫不负隔壁贵人
发的鸟他然后给付退给你
心态、
#include<bits/stdc+.h>
using namespace std;
int main(){
return 0;
}
展开
分享setdefault与get区别
王老师的头像王老师(新天地校区)
5天前 所有人可见
setdefault 同时也会改变 dict 的值:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {'runoob': '菜鸟教程', 'google': 'Google 搜索'}
print "Value : %s" % dict.setdefault('runoob', None)
print "Value : %s" % dict.setdefault('Taobao', '淘宝')
print "-----------------"
# 该值包含 Taobao
for k, v in dict.iteritems():
print k, v
以上实例输出结果为:
Value : 菜鸟教程
Value : 淘宝
-----------------
google Google 搜索
Taobao 淘宝
runoob 菜鸟教程
setdefault 和 get 还是有不同的:
setdefault 如果不存在会在原字典里添加一个 key:default_value 并返回 default_value。
get 找不到 key 的时候不会修改原字典,只返回 default_value。
若要修改字典 dic.setdefault(key,default_value) 等同于 dic[key] = dic.get(key,default_value)。
展开
新鲜事原文
王老师的头像王老师(新天地校区)
6天前 所有人可见
40图
图片
展开
分享【python】函数讲义
王老师的头像王老师(新天地校区)
6天前 所有人可见
为什么需要函数:
有时候,一些代码可能要在许多地方使用。如果采用传统的方式,一直重复编写相同的代码,那么代码将变得非常糟糕,并且非常难以维护。这时候我们就可以采用函数,来把一些重复执行的代码封装成一个函数,以后要再调用相同的代码的时候,就只要调用这个函数就可以了。
函数定义和调用:
定义函数:语法是使用def:
def 函数名(参数,可以为空):
代码块
示例:
def greet():
print('hello world')
调用函数:语法是使用这个函数的名字,后面再给个圆括号:
函数名(参数,可以为空)
示例:
greet()
函数参数:函数可以传递参数进去给函数:
def add(a,b):
print(a+b)
形参:就是在定义函数的时候指定的参数。
实参:就是在调用函数的时候传递进去的参数。
位置参数:位置参数就是按照形参中给定的参数的顺序。
def add(a,b):
print(a+b)
# 调用add
add(1,2)
在上例中,调用add函数,给的值a为1,b为2。这种位置很重要的参数叫做位置参数。
关键字参数:在传递参数的时候,可以按照形参的名字给定参数。
def add(a,b):
print(a + b)
# 调用add
add(a=1,b=2)
# 调换a和b参数的顺序来调用add函数
add(b=1,a=2)
*args和**kwargs:分别代表的是缺省的位置参数和关键字参数。
def add(*args,**kwargs):
print(args)
print(kwargs)
# 调用add
add(1,2,a=3,b=4)
其中1和2是位置参数,会保存在args中,a=3,b=4是位置参数,保存在kwargs中。
传递到函数中的args是一个元组,kwargs是一个字典。
元组和字典拆分出来成位置参数和关键字参数:
a = ('a','b','c')
b = {"username":"hlcoding","age":18}
def greet(*args,**kwargs):
print(args)
print(kwargs)
greet(a,*b) # 将a这个元组个的元素一个个拆开来给args,将b拆开来一个个给kwargs
默认参数:有时候一些参数,你可能需要给函数调用者,使用一个默认的参数,那么可以通过以下方式实现:
def greet(name,age=18):
print(name,age)
greet('hlcoding') #age将使用18来作为默认参数
greet('hlcoding',age=20) #age将使用20来作为默认参数
默认参数一定要放在其他参数的后面,但是放在缺省参数的前面。
函数返回值:函数可以有返回值:
def add(a,b):
return a + b
可以使用元组来返回多个值:
def greet():
return 'hlcoding',18
函数中变量的作用域:
局部变量:函数中的变量,不能在外面使用。
def greet():
name = 'hlcoding'
print('my name is %s'%name)
print(name) # 报错,因为name只在greet函数中有用
全局变量:全局变量是在函数或者某个代码块外面定义的变量,可以在函数中进行使用。
username = 'hlcoding'
def greet():
print('my name is %s' % username)
greet()
global关键字:如果想在函数或者某个代码块中修改全局变量,那么应该使用global关键字。
username = 'hlcoding'
def greet():
username = 'ketang' # 此时不是修改全局变量username,而是定义一个与全局变量相同名字的变量
print('my name is %s' % username)
greet()
print(usernmae) # 这时候username仍然是`hlcoding`。
列表和字典当作全局变量:列表和字典当作全局变量,在函数或者代码块中使用的时候,可以任意的增删改查列表和字典的值。但是如果要修改这个全局变量指向的值,则必须加global关键字。
persons = ['zhangsan','lisi']
def add_person(name):
persons.append(name)
add_person('wangwu')
print(persons) # 这时候persons已经变成['zhangsan','lisi','wangwu']了。
而如果你直接修改persons的指向,但没有使用global关键字,那么做的操作,将是在本地申请一个局部变量:
persons = ['zhangsan','lisi']
def add_person():
persons = ['wangwu']
add_person()
print(persons) # 仍然是'zhangsan'和`lisi`
匿名函数:
列表排序sort:使用sort给列表中的值进行排序的时候。如果列表中装的是字典,那么将不能正确的排序:
l = [{'username':'zhangsan','age':18},{"username":'lisi','age':20}]
l.sort()
正确的写法应该是:
l = [{'username':'zhangsan','age':18},{"username":'lisi','age':20}]
def sort_key(x):
return x['age'] # 根据年龄进行排序
l.sort(key=sort_key)
以上是定义一个函数来作为key,但是这个key的函数只需要用一次,以后再也用不到了,因此一般这种情况,我们可以使用匿名函数,也即lambda表达式,可以更好的完成我们的需求:
l = [{'username':'zhangsan','age':18},{"username":'lisi','age':20}]
l.sort(key=lambda x:x['age'])
自己动手写一个需要函数作为参数的函数:我们可以模范python自带的sort函数来实现一个做计算器运算的函数,我们让用户输入值,和计算方式:
def calculate(x,y,func):
return func(x,y)
# 实现一个加法计算器
calculate(1,2,lambda x,y:x+y)
# 实现一个减法计算器
calculate(2,1,lambda x,y:x-y)
# 实现一个乘法计算器
calculate(1,2,lambda x,y:x*y)
# 实现一个除法计算器
calculate(4,2,lambda x,y:x/y)
展开
分享【python】字典讲义
王老师的头像王老师(新天地校区)
6天前 所有人可见
为什么需要字典:
有时候我们需要存储一组相关的数据的时候,比如要存储一个人的信息,那么有username,age,birthday等,如果这些信息都存储在列表中,或者数组中,比如[‘username’,’age’,’birthday’]那么用起来可能不是很方便。比较方便的操作是,我直接通过username这个key就可以拿到这个值,我通过username就可以给这个key设置值,那么就可以通过字典的方式实现我们的需求。
字典基础:
创建字典:我们可以通过两种方式创建字典:
person = {"username":"hlcoding","age":18}
或者是使用dict函数:
person = dict(username='hlcoding',age=18)
基本操作:
len(d):返回字典的键值对的长度。
d[k]:获取k这个key对应的值。
d[k] = v:设置键为k的值为v,如果字典中不存在键为k的这一项,那么自动的添加进去。
del d[k]:删除d这个字典中键为k的这一项数据。
k in d:检查d这个字典中是否包含键为k的这一项。
字典中的键可以是任意的不可变类型,比如:浮点类型、整形、字符串或者元组。
字典常用方法:
clear:清除字典中所有的项。
a = {'username':'hlcoding','age':18}
print(a)
a.clear()
print(a)
get:访问字典中那个键对应的那个值。这个方法不会抛出异常。
a = {'username':'hlcoding','age':18}
username = a.get('username')
print(username)
city = a.get('city') # 获取到的是一个None。
# 也可以指定一个,在没有获取到这个值时候的默认值
city = a.get('city','china') # 返changsha
city = a['city'] # 抛出异常
pop:用来获得对应于给定键的值,然后将这个键盘和值的项从字典中删除。会返回这个值。
d = {'x':1,'y':2}
d.pop('x')
popitem:随机的移除字典中的一项。因为字典是无序的,所以是随机的。
d = {'username':"hlcoding",'age':18}
d.popitem() # 随机弹出一个值
update:用一个字典更新另外一个字典,如果碰到相同的键,则会覆盖。
a = {'url':'http://www.baidu.com/','title':"baidu"}
b = {"url":"http://www.google.com/",'new_value':"new_value"}
a.update(b)
print(a)
setdefault:如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值,并且会设置值到字典中。
遍历字典:
遍历字典中所有的key:使用keys方法,这个方法将所有的键以列表的方式返回。
a = {"url":"www.baidu.com",'title':"baidu"}
for x in a.keys():
print(x)
遍历字典中所有的value:使用values方法,这个方法将所有的值以列表的方式返回。
a = {"url":"www.baidu.com",'title':"baidu"}
for x in a.values():
print(x)
遍历字典中所有的键值对:使用items方法,这个方法将所有的键和值以列表的方式返回。
a = {"url":"www.baidu.com",'title':"baidu"}
for key,value in a.items():
print(key)
print(value)
展开
分享【python】元组讲义
王老师的头像王老师(新天地校区)
6天前 所有人可见
什么是元组:
元组的使用与列表相似,不同之处在于元组是不可修改的,元组使用圆括号,而列表使用中括号。
定义元组:
使用逗号的方法:
aTuple = 1,2,3 #这样就定义好了一个元组
print(aTuple)
使用圆括号的方法:
aTuple = (1,2,3)
print(aTuple)
使用tuple函数:
aList = [1,2,3]
aTuple = tuple(aList)
print(aTuple)
定义只有一个元素的元组:
aTuple = 12, # 这样就定义号了只有一个元素的元组
bTuple = (12,) #必须要再后面加一个逗号,否则就是一个普通的值了
元组常用操作:
下标操作:
aTuple = ('a','b','c')
a = aTuple[0]
切片操作:跟列表和字符串的切片操作一样。
解组操作:
aTuple = ('hlcoding',18)
name,age = aTuple
或者有些时候我们只想要元组中的某个值,不需要所有的值,那么我们可以通过_来作为省略:
aTuple = ('hlcoding',18,'中国')
username,age,_ = aTuple
count方法:获取元组中某个值出现的次数,跟列表中的用法相同。
index方法:获取元组中某个值的下标,跟列表中的用法相同。
元组存在的意义或应用场景:
元组在字典中可以当作key来使用,而列表是不可以的。
在函数中,有时候要返回多个值,一般采用元组的方式。
在一些不希望用户修改值的场景下使用元组来代替列表。
展开
分享【python】列表讲义
王老师的头像王老师(新天地校区)
6天前 所有人可见
为什么需要列表:
列表相当于一个容器。可以把一系列相关的值放在这个容器中进行存储。比如现在要存储水果的种类,那么如果通过之前的方式,一种水果用一个变量存储,那么代码将变得非常糟糕。正确的存储方式应该是定义一个列表类型的变量,然后把所有这些水果的名字存储到这个列表中。在其他编程语言中,叫做数组。
列表介绍:
如何定义列表:使用左右两个中括号的形式。
fruits = ['apple','banana','orange']
# 列表中的值,可以为不同的数据类型
test_list = ['a',1]
如何取列表中的值:列表支持下标操作,跟字符串的下标操作是一样的。
fruits = ['apple','banana','orange']
a = fruits[0]
b = fruits[1]
c = fruits[2]
列表的遍历:使用for和while循环都可以遍历。但一般推荐使用for循环。
for循环版本的:
fruits = ['apple','banana','orange']
for fruit in fruits:
print(fruit)
while循环版本的:
fruits = ['apple','banana','orange']
index = 0
length = len(fruits)
while index < length:
fruit = fruits[index]
print(fruit)
列表嵌套:列表中可以存储任何数据类型,当然也包括列表自身类型。也即,列表中也可以存储列表:
test_list = [1,2,3,['a','b','c']]
for temp in test_list:
print(temp)
列表相加:列表相加,相当于把后面一个列表的数据追加到第一个列表后面。
a = [1,2,3]
b = [4,5,6]
c = a + b
print(c)
列表的切片操作:跟字符串中的切片操作是一样的。
开始位置:包括开始位置。
结束位置:会取到结束位置前一个元素。
步长:默认位1,如果步长为负数,则从右到左。如果步长正数,则从左边到右边。
切片可以赋值。
逆序:list[-1::-1]
列表常用操作:
append:在列表末尾添加元素。
fruits = ['apple']
fruits.append('banana')
count:统计某个元素在列表中出现的次数。
temps = ['to','be','or','not','to','be']
print(temps.count('to'))
extend:将一个列表中元素追加到另外一个列表中。
a = [1,2,3]
b = [4,5,6]
c = a.extend(b)
# c的结果是:1,2,3,4,5,6
index:找出列表中第一个某个值的第一个匹配项的索引位置,如果没有找到,则抛出一个异常:
knights = ['hello','world']
print(knights.index('hello'))
insert:将某个值插入到列表中的某个位置:
chars = ['hello','world']
chars.insert(1,'nihao')
pop方法:移除列表中最后一个元素,并且返回该元素的值:
x = [1,2,3]
temp = x.pop() # 返回3
remove方法:移除列表中第一个匹配的元素,不会返回这个被移除的元素的值。如果被移除的这个值不存在列表中,则会抛出一个异常。
x = [1,2,3]
x.remove(2)
reverse:将列表中的元素反向存储。会更改原来列表中的值。
x = [1,2,3]
x.reverse()
print(x) #这时候x已经变成3,2,1了
sort:将列表中的元素进行排序。会更改原来列表中的位置。
x = [4,2,1,5,3]
x.sort()
print(x)
要区分sorted函数,sorted函数不会更改原来列表的位置,并且会返回一个排序后的值。
x = [4,2,1,5,3]
y = sorted(x)
print(y)
del关键字:根据下标删除元素:
a = [1,2,3]
del a[0]
print(a) # [2,3]
使用in判断列表中是否有某个元素:
x = [1,2,3]
if 1 in x:
print(True)
else:
print(False)
list函数:将其他的数据类型转换成列表:
a = 'hello'
print(list(a))
列表生成式:
列表生成式,可以将好几行的代码写在一行中。比如要获取一个从1-100的整数值的列表。如果通过传统的方式,那么只能这样写:
values = []
for x in range(1,101):
value.append(x)
如果通过列表生成式,那么可以通过以下一行代码实现:
values = [x for x in range(1,101)]
当然也可以在列表生成式的时候,判断条件,只有满足条件的才会被加入到列表中:
values = [x for x in range(1,101) if x%2==0]
展开
分享【python】字符串讲义
作者王老师(新天地校区)
2023-08-16 09:24:12 所有人可见
字符串:
什么是字符串:
在Python中,使用单引号或者双引号括起来的,就是字符串。
字符串也可以使用六个单引号或者六个双引号括起来。
在Python3中,字符串分为两种类型,第一种是str,是unicode字符串,第二种是bytes,就是经过编码后的字符串,是一种字节码,适用于保存在磁盘上或者在网络上传输。
字符串拼接: