python之pandas入门操作
2020-12-13 04:16
标签:链接 理论知识 中位数 简单 读取 argmax class style 删除 本文章是建议入门者直接上手操作,在操作中再去想为什么,是什么? --理论知识暂时不写了,可自行百度 ,跟着代码来入门,简单粗暴。 python之pandas入门操作 标签:链接 理论知识 中位数 简单 读取 argmax class style 删除 原文地址:https://www.cnblogs.com/HugJun/p/11107297.htmlimport pandas as pd
import numpy as np
from pandas import Series,DataFrame
#数据结构:Series 和DataFrame
#Series 是一个定长的字典序列 定长:相当于两个ndarray
#Series有两个基本属性:index和values index默认0,1,2...递增 可以自定义索引如: index=[‘a‘,‘b‘..]
x1 = Series([1,2,3,4])
# print(x1)
x2 = Series(data=[1,2,3,4],index=[‘a‘,‘b‘,‘c‘,‘d‘])
# print(x2)
#也可用字典的方式来创建Series
d = {‘a‘:1,‘b‘:2,‘c‘:3,‘d‘:4}
x3 = Series(d)
# print(x3)
#DataFrame 类型数据结构-类似数据库表——包含了行索引和列索引
data = {‘chinese‘:[66,95,93,90,80],‘English‘:[65,85,92,88,90],‘Math‘:[30,98,96,77,90]}
df1 = DataFrame(data)
# print(df1)
#设置行索引index 以及列索引columns
df2 = DataFrame(data,index=[‘ZhangFei‘,‘GuanYu‘,‘ZhaoYun‘,‘HuangZhong‘,‘DianWei‘],columns=[‘English‘,‘Math‘,‘chinese‘])
# print(df2)
"""
df1 结果
chinese English Math
0 66 65 30
1 95 85 98
2 93 92 96
3 90 88 77
4 80 90 90
df2结果
English Math chinese
ZhangFei 65 30 66
GuanYu 85 98 95
ZhaoYun 92 96 93
HuangZhong 88 77 90
DianWei 90 90 80
"""
#了解了基本的Series和DataFrame两个数据结构后,我们从数据处理的流程来继续学习使用方法
#数据的导入和输出
#pandas允许直接从xlsx,csv文件中导入数据,也可输出到xlsx,csv中
#xlsx excel文件自行准备
score = DataFrame(pd.read_excel(‘pandas_data.xlsx‘))
# score.to_excel(‘data1.xlsx‘)
# df2.to_excel(‘data1.xlsx‘)
#pip install openpyxl
#pip install pandas
# print(score)
#数据清洗
# drop()删除不需要的行或列
# df2 = df2.drop(index=[‘ZhangFei‘])
# df2 = df2.drop(columns=[‘chinese‘])
# print(df2)
# rename重命名列名 columns, rename(columns=new_name,inplace=True)
# df2.rename(columns={‘chinese‘:‘Yuwen‘,‘English‘:‘Yingyu‘},inplace=True)
# print(df2)
#去重复的值 drop_duplicates() 自动去重行
data1 = {‘chinese‘:[66,66,95,93,90,80],‘English‘:[65,65,85,92,88,90],‘Math‘:[30,30,98,96,77,90]}
df3 = DataFrame(data1,index=[‘ZhangFei‘,‘ZhangFei‘,‘GuanYu‘,‘ZhaoYun‘,‘HuangZhong‘,‘DianWei‘],columns=[‘English‘,‘Math‘,‘chinese‘])
df3 = df3.drop_duplicates()
# print(df3)
#格式问题---更改数据格式--astype()
#eg:将chinese字段值改成str或者int64类型
df3[‘chinese‘].astype(‘str‘)
# import numpy as np
# df3[‘chinese‘].astype(np.int64)
# print(df3)
#数据间的空格--先把格式转换成str类型,strip函数去空格 map()映射
# df3[‘chinese‘]=df3[‘chinese‘].map(str.strip)
# #删除左空格
# df3[‘chinese‘]=df3[‘chinese‘].map(str.lstrip)
# #右空格
# df3[‘chinese‘]=df3[‘chinese‘].map(str.rstrip)
# #特殊字符
# df3[‘chinese‘]=df3[‘chinese‘].map(str.rstrip(‘$‘))
#大小写转换
#小
df3.columns=df3.columns.str.upper()
#大
df3.columns=df3.columns.str.lower()
#首字母大写
df3.columns=df3.columns.str.title()
# 查找空值 空值NAN isnull()
df3.isnull() #对应字段 返回True或Flask
#apply函数对数据进行清洗--使用频率较高
#eg:大小写转化
# apply(str.upper)
df4 = DataFrame(data={‘name‘:‘ZhangSan‘},index=[‘1‘])
# print(df4)
df4[‘name‘] = df4[‘name‘].apply(str.upper)
# print(df4)
#apply也可定义函数在apply中使用 apply(func)
#数据统计
#如果有遇到控制NaN会自动排除
#min() max() sum() mean() 平均值
#median() 中位数 var()方差 std()标准差
#argmin()统计最小值的索引位置 argmax()统计最大值的索引位置
#idmin() 统计最小值的索引值 idxmax()统计最大值的索引值
######统计函数千千万,describe()函数最便捷 统计大礼包。。
df6 = DataFrame({‘name‘:[‘ZhangFei‘, ‘GuanYu‘, ‘a‘, ‘b‘, ‘c‘], ‘data1‘:range(5)})
# print(df6.describe())
# print(df6)
"""
data1
count 5.000000
mean 2.000000
std 1.581139
min 0.000000
25% 1.000000
50% 2.000000
75% 3.000000
max 4.000000
"""
#数据合并
#将多个渠道源的多个数据库表进行合并,
#一个DataFrame为一个数据表内容 两个合并使用merge()
df7 = DataFrame({‘name‘:[‘Zhangfei‘,‘lisi‘,‘zhangsan,‘,‘a‘]})
df8 = DataFrame({‘name‘:[‘Zhangfei‘,‘lisi‘,‘a,‘,‘a‘]})
#基于指定列进行连接---健的交集
# df9 = pd.merge(df7,df8,on=‘name‘)
#inner内连接内链接是 merge 合并的默认情况,inner 内连接也为健交集
df9 = pd.merge(df7,df8,how=‘inner‘)
# print(df9)
#如何用SQL方式打开Pandas
#可以直接使用sql语句来操作pandas
from pandasql import sqldf,load_meat,load_births
df10 = DataFrame({‘name‘:[‘ZhangFei‘,‘GuanYu‘,‘a‘,‘b‘,‘c‘],‘data1‘:range(5)})
#将sql作为参数传入匿名函数中 sql参数, 设置globals全局参数
pydf10 = lambda sql:sqldf(sql,globals())
sql = "select * from df10 where name=‘ZhangFei‘"
print(pydf10(sql))
"""
Pandas中有Series和DataFrame两种重要的数据结构。
Series:是一个定长的字典序列。有两个基本属性:index,values
DataFrame:类似于数据库表的一种数据结构。我们甚至可以像操作数据库表那样对DataFrame数据进行
连接,合并,查询等等
常用DataFrame进行数据清晰:用到的发方法有:
- describe() 统计性描述
- drop_duplicates() 删除重复行
- rename(columns=...) 更名
- dropna() 删除具有空的行
- isnull() 判断空值
- fillna() 填充空值
- apply() 应用函数
- merge() 合并df
- value_counts() 统计某列的各类型个数
- read_excel() to_excel() 读取和保存excel
- set_index() 设置索引
- cut 分组
"""