都是平日编程用到的小知识点,每遇到一个就加一个,为了之后方便查询,希望对大家也有所帮助
1.删除dataframe全为0的列
###假设数据为data##
data.loc[:,~(data==0).all()]
2、返回dataframe数据某列为某值的所有行
##df数据中label列是2的所有行
df_2 = df[df['label'].isin([2])]
3、在列表中添加元素,append()函数一次只能为列表添加一个元素,extend()函数可以将添加的列表(或者元组)中的元素独立的添加到列表中
##为x=[]空列表中添加5个1
x=[]
import numpy as np
for i in np.ones(5):
x.append(i)
x.extend(np.ones(5))
4、np.where(condition,x,y) ---满足condition的数据输出x,否则输出y
import numpy as np
a = np.arange(8)
b = np.where(a>=5,1,-1)
#b=[-1 -1 -1 -1 -1 1 1 1]
5、对于dataframe数据结构a,切片的区别:a[0:10]-----不包含第10行数据,
a.loc[0:10]---包含第10行数据
6、利用列表创建dataframe
a1=[1,2,3,4,5]
a2=[4,5,6,7,8]
df=pd.DataFrame({'列名1’:a1, '列名2':a2})
##利用for循环查看索引和值
for index,value in df.iterrows():
print(index)
print(value)
7、数据转存到csv文件,中文乱码问题--------加入encoding=‘utf-8-sig’
8、series数据利用for循环遍历索引和值
for index,value in enumerate(df):
print(index)
print(value)
9、dataframe数据类型寻找符合某一列的特定值的索引,输出为列表
#输出task2表中列‘群ID’的值为ACIDSNYX的所有行索引
t = task2.loc[(task2['群ID']=='ACIDSNYX'].index.tolist()
10、dataframe数据修改列名----df.columns['列名1’,'列名2',.....]
11、根据出生年月判断生肖
def year_animals(birth):
year = [1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007]
animals = ['鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪']
for i in range(12):
for n in range(50):
if int(birth[0:4])-year[i]==12*n or int(birth[0:4])-year[i]==12*(-n):
print('您的生肖是: '+animals[i])
12、自定义函数
def functionName(形参):
函数体
functionName(实参) #调用函数
参数定义的顺序:
(1)位置参数:按位置匹配的参数
(2)默认参数:默认参数必须指向不变参数,在定义函数的时候赋予了参数初值,定义的时候可不必在赋值了
(3)可变参数:*形参,该参数可以接纳任意多个实参,实参被捆绑为元组
(4)关键词参数:**形参,可以把带参数名的参数值组装到一个字典中,键是具体的实参名,值是传入的参数值
13、Numpy数组:
[ ]-一维数组;[[ ],[ ]]内嵌了一维数组,就是二维数组;[[[ ],[ ]],[[ ]]],内嵌了二维数组,就是三维数组,依次。。。
print(L.shape)-输出维度从高到低排序,例如二维数组,输出第一个数字表示二维数组包含几个一维数组,第二个数字一维数组包含几个数字。
14、PNG图像格式转JPG
from PIL import Image
im = Image.open('tupian.png')
im.save('tupian_chang.jpg') ##RGB模式下
##如果为RGBA模式下,需要先转化为RGB模式
im.convert('RGB').save('tupian_change.jpg')
15、图像数据结构转化
###PIL的Image对象转化为Numpy
im = Image.open('tu.png')
im = np.array(im)
###将numpy转化为Image
im = imread('tu.png')
im = Image.fromarray(im)
16、图像镜像、图像旋转、更改像素值操作
##镜像transpose()函数
im.transpose(Image.FLIP_LEFT_RIGHT) ##垂直轴的镜像
im.transpose(Image.FLIP_UP_DOWN) #水平轴的镜像
##旋转
im.rotate(45) #角度
##改像素值putpiexl()函数
17、彩色图片变灰度图使用color.rgb2gray(im)
18、调整图片大小使用im.resize((width,height),Image.ANTIALIAS) Image.NEAREST :低质量 Image.BILINEAR:双线性 Image.BICUBIC :三次样条插值 Image.ANTIALIAS:高质量
19、正则函数
re.match(pattern,string,flags=0)----从string起始位置匹配; re.search(pattern,string,flags=0)扫描整个字符串并返回第一个成功的匹配;re.sub(pattern,repl,string,count=0,flags=0)----用于替换字符串中的匹配项,repl为替换的字符串, count为替换的次数;re.subn()和sub函数相似,返回一个元组(新字符串,替换次数);re.compile()用于编译正则表达式;re.findall()匹配所有符合正则表达式的字符,并返回一个列表;re.finditer(pattern,string,flages=0)从字符串中找到正则表达式所匹配的所有子串,并作为迭代器返回; re.split(pattern,string,maxsplit=0,flags=0)用pattern做分隔符切分字符串,分割后返回列表。