pandas用法总结
#1、数据的生成(dataframe数据框|series序列)
#模块导入
import pandas as pd
import numpy as np
import pymysql
#方法1:excel、csv、sql导入
df_exl=pd.read_excel('C:/Users/15432/Desktop/testdata_1.xlsx',header=0)#导入excel文件从0行开始
df_exl2=pd.read_excel('C:/Users/15432/Desktop/testdata_2.xlsx')
df_csv=pd.read_csv('C:/Users/15432/Desktop/testdata_1.csv')
db = pymysql.connect("127.0.0.1","root","123456","mysql" )# 打开数据库连接:主机,账号,密码,数据库名称
cursor = db.cursor()# 使用 cursor() 方法创建一个游标对象 cursor
sql="""SELECT VERSION()"""
cursor.execute(sql)#使用 execute() 方法执行 SQL 查询
data = cursor.fetchone()# 使用 fetchone() 方法获取单条数据.
print ("Database version : %s " % data)
db.close()# 关闭数据库连接
#方法2:自己创建dataframe数据框或series序列
series=pd.Series([1,2,3,4,np.nan,6,7])
print(series)
dates=pd.date_range('20180601',periods=3)
df1=pd.DataFrame(np.random.randn(3,4),index=dates,columns=['one','two','three','four'])#numpy随机数生成
df2=pd.DataFrame({'id':[1001,1002,1003],'city':['bj','sh','gz'],'age':['22','23','34']})#字典生成
print(df1)
df2
2、数据表信息查看
(1)数据表的维度查看
df_exl.shape
(2)数据表基本信息(维度、列名称、数据格式、所占空间等)
df_exl.info
(3)查看数据表的值
df_exl.values
(4)查看列名称
df_exl.columns
#(5)查看前5行数据、后5行数据:
df_exl.head()
df_exl.tail()
(6)查询某一列格式
df_exl['用户编号'].dtype
(7)查询空值
df_exl.isnull()
df_exl.isna()
(8)查看某一列的唯一值
consumer=df_exl['客户名'].unique()
counter=0
for i in consumer:
counter+=1
print(counter)
consumer
3、数据清洗
(1)用数字0填充空值
df_exl.fillna(value=0)
df_exl.dropna(axis=1,how='all')#删除整列都是na值的整列删除
(2) 用201805这列的均值填充空值
df_exl['201805'].fillna(df_exl['201805'].mean())
(3)将数据表某列或某行删除
df_exl=df_exl.drop(axis=1,columns='201806')
df_exl=df_exl.drop(axis=0,index='')
(4)清除某列的字符空格
df_exl['客户名']=df_exl['客户名'].map(str.strip)
(5)大小写转换
df_exl['客户名']=df_exl['客户名'].str.lower()
df_exl['客户名']=df_exl['客户名'].str.upper()
(6)更改数据格式
df_exl['入网时间'].astype('int64')
(7)删除先出现的重复值
df_exl['用户编号'].drop_duplicates()
删除后出现的重复值
df_exl['用户编号'].drop_duplicates(kepp='last')
(8)数据替换
df2['city'].replace('bj','sh')#sh替换bj
3、数据预处理
#删除201806这列
df_exl=df_exl.drop(axis=1,columns='201806')
df_exl2=df_exl2.drop(axis=1,columns='201806')
#(1)数据表合并
#交集形式
df_inner=pd.merge(df_exl,df_exl2,how='inner',on='用户编号')
#并集形式
df_outer=pd.merge(df_exl,df_exl2,how='outer',on=['用户编号','设备号','中心','执行人','入网时间','客户名'])
#(3)设置索引列
df_exl.set_index('用户编号')
#(4)按索引列排序
df_exl.sort_index()
#(5)按特定列的值排序
df_exl.sort_values(by=['用户编号'])
#(6)如果用户编号列的值大于1000000000000000,则客户名列显示high,否则显示low
df_exl['客户名']=np.where(df_exl['用户编号']>1000000000000000,'high','low')
#df_exl['客户名']
#对复合多个条件的数据进行分组标记
df_exl.loc[(df_exl['201801']==0) & (df_exl['201803']>=20),'sign']=1