
2020-07-20
pandas 是为了解决数据分析任务而创建的Python 库,源于NumPy ,经常被用于对数据挖掘前期数据的处理工作。pandas提供了大量的处理数据的函数和方法,并且还纳入了大量库与很多标准的数据模型,能让我们更加高效地处理大型数据集。但是大家在使用pandas的过程中,经常会遇到这样那样的问题,下面,小编就整理了一些大家需要掌握的pandas 的基础知识,希望对大家有所帮助。
以下文章来源于: 数据分析1480
作者:刘顺祥
背景介绍
经常会有一些朋友问我类似的问题,“哎呀,这个数据该怎么处理啊,我希望结果是这样的,麻烦刘老师帮我看看。”、“刘老师,怎么把一列数据拆分出来,并取出最后一个拆分结果呀?”、“刘老师,怎么将Json数据读入到Python中呢?”。在我看来,这些问题都可以借助于Pandas模块完成,因为Pandas属于专门做数据预处理的数据科学包。下面来介绍一下我认为Pandas模块中需要掌握的功能和函数。
数据读写
案例演示
# 读入MySQL数据库数据 # 导入第三方模块 import pymysql # 连接MySQL数据库 conn = pymysql.connect(host='localhost', user='root', password='test', database='test', port=3306, charset='utf8') # 读取数据 user = pd.read_sql('select * from topy', conn) # 关闭连接 conn.close() # 数据输出 User
数据初印象
案例演示
# 数据读取 sec_cars = pd.read_table(r'C:\Users\Administrator\Desktop\sec_cars.csv', sep = ',') # 预览数据的前五行 sec_cars.head() # 查看数据的行列数 print('数据集的行列数:\n',sec_cars.shape) # 查看数据集每个变量的数据类型 print('各变量的数据类型:\n',sec_cars.dtypes) # 数据的描述性统计 sec_cars.describe()
案例演示
# 数据读入 df = pd.read_excel(r'C:\Users\Administrator\Desktop\data_test05.xlsx') # 缺失观测的检测 print('数据集中是否存在缺失值:\n',any(df.isnull())) # 删除法之记录删除 df.dropna() # 删除法之变量删除 df.drop('age', axis = 1) # 替换法之前向替换 df.fillna(method = 'ffill') # 替换法之后向替换 df.fillna(method = 'bfill') # 替换法之常数替换 df.fillna(value = 0) # 替换法之统计值替换 df.fillna(value = {'gender':df.gender.mode()[0], 'age':df.age.mean(), 'income':df.income.median()})
类型转换与元素及运算
案例演示
# 数据读入 df = pd.read_excel(r'C:\Users\Administrator\Desktop\data_test03.xlsx') # 将birthday变量转换为日期型 df.birthday = pd.to_datetime(df.birthday, format = '%Y/%m/%d') # 将手机号转换为字符串 df.tel = df.tel.astype('str') # 新增年龄和工龄两列 df['age'] = pd.datetime.today().year - df.birthday.dt.year df['workage'] = pd.datetime.today().year - df.start_work.dt.year # 将手机号中间四位隐藏起来 df.tel = df.tel.apply(func = lambda x : x.replace(x[3:7], '****')) # 取出邮箱的域名 df['email_domain'] = df.email.apply(func = lambda x : x.split('@')[1]) # 取出人员的专业信息 df['profession'] = df.other.str.findall('专业:(.*?),') # 去除birthday、start_work和other变量 df.drop(['birthday','start_work','other'], axis = 1, inplace = True)
数据合并、连接与汇总
案例演示
# 构造数据集df1和df2 df1 = pd.DataFrame({'name':['张三','李四','王二'], 'age':[21,25,22], 'gender':['男','女','男']}) df2 = pd.DataFrame({'name':['丁一','赵五'], 'age':[23,22], 'gender':['女','女']}) # 数据集的纵向合并 pd.concat([df1,df2] , keys = ['df1','df2']) # 如果df2数据集中的“姓名变量为Name” df2 = pd.DataFrame({'Name':['丁一','赵五'], 'age':[23,22], 'gender':['女','女']}) # 数据集的纵向合并 pd.concat([df1,df2]) # 构造数据集 df3 = pd.DataFrame({'id':[1,2,3,4,5],'name':['张三','李四','王二','丁一','赵五'], 'age':[27,24,25,23,25],'gender':['男','男','男','女','女']}) df4 = pd.DataFrame({'Id':[1,2,2,4,4,4,5], 'score':[83,81,87,75,86,74,88] 'kemu':['科目1','科目1','科目2','科目1','科目2','科目3','科目1']}) df5 = pd.DataFrame({'id':[1,3,5],'name':['张三','王二','赵五'], 'income':[13500,18000,15000]}) # 三表的数据连接 # 首先df3和df4连接 merge1 = pd.merge(left = df3, right = df4, how = 'left', left_on='id', right_on='Id') merge1 # 再将连接结果与df5连接 merge2 = pd.merge(left = merge1, right = df5, how = 'left') merge2
完 谢谢观看
上一篇: 数字图像处理中的灰度直方图是是什么 ... 下一篇: 谁在崛起,谁在没落?新一线城市竞争 ...