1.数据框增加一列,df['new'] = test[0]表示给df新增一列,列名为new,整列值为test[0];
import pandas as pd
a = {'ip':[1,2,3,4],'name':[0,9,8,77],'time':['qq','ww','ee','rr']}
df = pd.DataFrame(a)
test = ['qqq','eeee']
df['new'] = test[0]
print(df)
2.数据框列内容筛选,
df1 = df[df['name'].isin([9,8])]表示筛选name列为9和8的数据框;
df2 = df[~df['name'].isin([9,8])]表示筛选name列不是9和8的数据框,~表示反;
df3 = df[(df['name'] > 9) | (df['name'] < 8)]表示筛选name列大于9或小于8的数据框,|表示或;
df4 = df[(df['ip'] > 2) & (df['ip'] <= 4)]表示筛选ip列大于2且小于等于4的数据框,&表示且。
import pandas as pd
a = {'ip':[1,2,3,4],'name':[0,9,8,77],'time':['qq','ww','ee','rr']}
df = pd.DataFrame(a)
df1 = df[df['name'].isin([9,8])]
df2 = df[~df['name'].isin([9,8])]
df3 = df[(df['name'] > 9) | (df['name'] < 8)]
df4 = df[(df['ip'] > 2) & (df['ip'] <= 4)]
print(df1)
print(df2)
print(df3)
print(df4)
3.数据框,获取行数、列数及第几行第几列的值
import pandas as pd
a = {'ip':[1,2,3,4],'name':[0,9,8,77],'time':['qq','ww','ee','rr']}
df = pd.DataFrame(a)
print(df)
colum_size = df.columns.size#列数 2
row_size = df.iloc[:,0].size#行数 3
num1 = df.iloc[[0]].values[0][0]#第一行第一列的值 1
num2 = df.iloc[[1]].values[0][1]#第二行第二列的值 9
print(colum_size)
print(row_size)
print(num1)
print(num2)
4.数据框固定列顺序
import pandas as pd
a = {'ip':[1,2,3,4],'name':[0,8,8,77],'time':['qq','ww','ee','rr']}
df = pd.DataFrame(a)
b = ['name','ip','time']
df1 = df.loc[:,b]
print(df1)
5.设置表格的列宽
worksheet.set_column("A:A", 15) #设置单一列宽度
举例:
worksheet.set_column("A:B", 15)#设置区域列宽度
worksheet.set_column("0:1", 15) #依据索引更新列宽度
6.设置表格的行高
worksheet.set_row(1, 30) #设置单一行高度
7.python 去掉字符串中的数字
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from string import digits
aa = "12433432dfsff45dsfdcce测试"
res = aa.translate(str.maketrans('', '', digits))
print(res)
8.重命名列名,将‘设备IP’替换成‘IP’
#替换名称,inplace = True它的作用是:是否在原对象基础上进行修改
df.rename(columns={'设备IP':'IP'},inplace=True)
9.获取有空值的行数据
df.isnull().any()
10.获取有空值的列数据,T表示行列转置
df[df.isnull().T.any()]
11.去掉空值
#删除行参数axis = 0,删除列的参数axis = 1,存在nan则删除行或列how='any',所有值为nan则删除行或列how='all'
df.dropna(axis=1,how='any')
12.去掉指定列空值
#subset: 对特定的列进行缺失值删除处理
#方法一:
df.dropna(subset=['设备名称'])
#方法二:
df[~(df['设备名称'].isnull())]
13.查看重复值
df2 = df[df.duplicated()==True]
print(df2)
14.
df.drop_duplicates(subset=['IP'],keep='first',inplace=True)
去掉重复值
15.loc和iloc的区别
loc:用于通过行/列标签索引数据,iloc:用于通过行/列号索引数据
import pandas as pd
test_df=pd.DataFrame({'name':['张三','李四','王五','张三','李四','王五','张三'],
'level':[10,3,8,14,2,3,18],
'info':['吵闹','安静','中等','吵闹','安静','安静','吵闹'],
'change_times':[1,2,3,1,2,4,9]
})
print(test_df.loc[2])
print(test_df.iloc[2])
16.按列统计数量
统计满足条件的行数,size()
import pandas as pd
a = pd.DataFrame({'ip':[3,1,5,2,8],'name':['a','b','a','d','e']})
print(a)
name_df1 = a.groupby(['ip','name']).size().reset_index() #以ip,name分组,统计数量
name_df2 = a.groupby(['name']).size().reset_index() #以name分组,统计数量
print(name_df1)
print(name_df2)
name_df2.rename(columns = {0:'数量'},inplace=True) #重置统计列的列名
print(name_df2)
17.排序
对单列数据进行排序
import pandas as pd
a = pd.DataFrame({'ip':[3,1,5,2,8],'name':['a','b','a','d','e']})
print(a)
a.sort_values(by=['ip'],axis=0,ascending=True,inplace=True) #ascending,ture升序,false降序
a.reset_index(drop=True,inplace=True)
print(a)
18.unique()函数与nunique()函数区别
unique()是以 数组形式(numpy.ndarray)返回列的所有唯一值,nunique()返回的是唯一值的个数