【python数据分析模块教程】2——pandas基础简介以及运用
1.生成数据表
1.1 Series 创建
- 列表创建
s1=pd.Series([1,2,3,4])
- 列表+列名创建
s2=pd.Series([1,2,3,4,],index=['a','b','c','d'])
s3 = pd.Series({'a':1,'b':2})
1.2 series 转换为 dataframe
- 转换
s1.to_frame()
- 转置转换
s2.to_frame().T
1.3 Dataframe创建
- 多维列表创建
array = [[1,2,3],[3,4,5]]
df = pd.DataFrame(array)
- 数组字典创建
dict = {'name':['datafrog','data','frog'],'age':[18,19,18]}
df = pd.DataFrame(dict)
1.4 导入文件(csv,xlsx)
df = pd.DataFrame(pd.read_csv('name.csv',header=1)) # 以第2行为表头
df = pd.DataFrame(pd.read_excel('name.xlsx'))
df = pd.read_csv('stocks.csv',header=0,skiprows=[1,2]) # 以第一行为表头,跳过2,3行
df = pd.read_csv('stocks.csv',keep_default_na=False) # 把nan填充的变为空值
1.5 连接SQL
import pandas as pd
import sqlalchemy#需要执行的sql语句
sql='select * from stu'
#登录sql参数
engine = sqlalchemy.create_engine('mysql+pymysql://root:mysql@localhost:3306/data')
#读取sql
df = pd.read_sql(sql,engine)# 新建一个dataframe
df1 = pd.DataFrame({'name':['zhangsan','wagnwu','zhaoliu'],'age':[18,19,17]})
#将dataframe导入到sql中
df.to_sql('stu',engine,index=False,if_exists='append')
2. 数据表Dataframe的查看
2.1 获取行索引,列索引,行列索引
df.index
df.columns
df.axes
2.2 修改列索引,以某列作为行索引
df.columns=(['a','b','c'])
df.set_index('b')
2.3 查看表格整体情况,查看各列的类型,查看各项统计值
df.info() # (维度、列名称、数据格式、所占空间)
df.dtypes
df.describe()
2.4 查看前x行,查看后x行,查看行*列,查看有多少行多少列
df.head()
df.tail()
df.size
df.shape
2.5 查看某列有多少种值
df.age.uique()
chipo['item_name'].nunique()
2.6 查看某列各种值的个数
df.age.value_counts()
2.7 根据列进行排序
df.sort_values('name') #根据一列进行排序,默认升序
df.sort_values(['name','age'],ascending=[True,False]) #根据多列进行排序,前者升序,后者降序
2.8 查看最大值,最小值,求和,每列最值索引
df.max()
df.min()
df.sum()
df.idxmax()
2.9 累加求和
df.cumsum()
3.数据清洗
nun值填充
df.fillna(0)
4.数据预处理
修改列索引
# 方法一
df.columns=(['name','age','sex']) #如果多赋给了列或者少赋给会报错#方法二
df.rename(columns={'姓名':'name', '年龄':'age', '性别':'sex'},inplace=True)
# 修改列索引,inplace=True表示直接对源数据进行修改
替换一个值
#将name列的zz全部替换为zzz
df.replace({'name':{'zz':'zzz'}})
#另一种写法
df.name.replace({'zz':'zzz'})
增加一列,删除一列,删除一行
df['height']=1 #增加了全等于1的一列
del df['height'] #删除height列
df.drop(labels=0)#删除行/列 labels是行列名称,默认axis=0删除行,1删除列
修改一列的多个值
df.sex=df.sex.map({'男':'male','女':'female'}) #把sex列的男改为male,女改为female
5.数据提取
iloc与loc区别
- loc是基于索引的,左闭右闭
- iloc是基于位置的,左闭右开
重新设置索引,将某一列设置为索引
df.reset_index()
df.set_index('用户ID')
设置日期为索引,提取某一天之前的所有行
df_inner=df_inner.set_index('date')
df_inner[:'2013-01-04']
使用loc提取一行,提取多行
df.loc[2] #提取第二行
df.loc[[0,1,2]] # 提取第1,2,3,行
df.loc[0:3:2] #提取1-4行,步长为2
使用loc提取某一列的多行
df.loc[0:5,'年龄']
使用loc提取一个条件下的所有行
#方法一
b1=df['年龄']>30
df.loc[b1]
#方法二
df.loc[df['年龄']>18,:] # 冒号可以省略
使用iloc按位置区域提取多行多列
df.iloc[:3,:2] #冒号前后的数字不再是索引的标签名称,而是数据所在的位置,从0开始,前三行,前两列。
使用iloc按位置单独提起数据
df.iloc[[0,2,5],[4,5]] #提取第0、2、5行,4、5列
选取一列,选取多列
df['年龄'].head()
df[['年龄','城市']].head()
df.age
选取行和列
# 单行下的单列,一个单元格
df.loc[0,'年龄']
#多行多列
df.loc[0:3,['年龄','性别']]
#多行多列
df.iloc[0:3,0:2]
判断city列的值是否为北京
df[‘city’].isin([‘beijing’])
判断city列里是否包含beijing和shanghai,将符合条件的数据提取出来
df.loc[df_inner[‘city’].isin([‘beijing’,’shanghai’])]
提取前三个字符,并生成数据表
pd.DataFrame(category.str[:3])
6.数据关联
concat拼接
pd.concat([left,right]) #简单上下拼接,所有列名都会展出,空值填充NAN
pd.concat([left,right],ignore_index=True) #重置行索引
pd.concat([left,right],axis=1 #左右拼接,所有行都展出)
merge拼接
result=pd.merge(left,right,on='key') #默认inner join,多出的key无法展示
result=pd.merge(left,right,on=['key1',‘key2’]) #多个关联
#左连接
result = pd.merge(left, right, how='left', on=['key1', 'key2'])
#右连接
result = pd.merge(left, right, how='right', on=['key1', 'key2'])
#外连接
result = pd.merge(left, right, how='outer', on=['key1', 'key2'])#以上针对列名相同
#列名不同时用下面方法:
pd.merge(left,right,left_on = ['key1','key2'],right_on = ['key3','key4'])#行索引不同的时候,通过索引来关联
#1.先改行索引
left.set_index('key1',inplace=True)
right.set_index('key3',inplace=True)
#2.左边也用行索引,右边也用行索引
pd.merge(left,right,left_index=True,right_index=True)
6.数据聚合
- 主要函数是groupby和pivote_table
按照列分组
gb_dis=df.groupby('district')
按照区域进行计数
df.groupby('district').count()
按照区域进行计数并排序
df.groupby('district').count().sort_values('user_id')
按区域对userid进行计数
df.groupby('district')['user_id'].count()
按照城市,区域对userid进行计数
df.groupby(['city','district'])['user_id'].count()
按照区域分组后,对每个列都求均值,和
#写法1
gb_dis=df.groupby('district')
gb_dis.agg([np.mean,np.sum])
#写法2
df.groupby('district').agg([sum,np.mean])
按照区域分组后,针对具体的列进行聚合
df.groupby('district').age.agg([np.mean,np.sum,np.std])
按照区域分组后,不同列不同聚合函数
df.groupby('district').agg({"age":np.mean,"novip_buy_times":np.sum})
【python数据分析模块教程】2——pandas基础简介以及运用相关推荐
- 【python数据分析模块教程】5——pyecahrts基础简介以及运用
1.如何安装 1.进入cmd 2.conda env list 查看当前电脑中有多少个annaconda环境 图中表示当前电脑只有一个默认环境base 3.conda create --name ec ...
- Python数据分析第三期--简述Pandas
Python数据分析第三期–简述Pandas 目录 文章目录 Python数据分析第三期--简述Pandas 目录 1. Pandas 的数据结构 1.1 Series 1.2 DataFrame 1 ...
- 【Python数据分析与可视化】Pandas统计分析-实训
[Python数据分析与可视化]Pandas统计分析-实训 文章目录 [Python数据分析与可视化]Pandas统计分析-实训 导包 读取数据 分析数据 1.查看数据的描述和统计信息: 2.修改列名 ...
- Python数据分析入门教程(更新中)
Python数据分析入门教程 你好! 这是一篇适用于初学者的Python数据分析入门教程 1. Numpy关于矩阵的操作 1.1数组与矩阵的基本概念 矩阵:矩阵是一个按照长方阵列排列的实数或复数集合( ...
- python数据分析系列教程——Pandas全解
分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 起步 Pandas最初被作为金融数据分析工具而开发出来,因此 pandas 为时间序列分析提 ...
- python 数据分析模块_Python数据分析pandas模块用法实例详解
本文实例讲述了Python数据分析pandas模块用法.分享给大家供大家参考,具体如下: pandas pandas10分钟入门,可以查看官网:10 minutes to pandas 也可以查看更复 ...
- Python数据分析之Numpy、Pandas与Matplotlib基础
Python在数据科学中的作用 Python之所以能够成为大数据分析的主要工具,主要是因为他有很多现成的数据分析以及机器学习的工具包(Python中称为库),比如Numpy库.Pandas库.Scik ...
- python数据分析模块包括_数据开发必会 | Python数据分析模块
作为数据开发,Python强大的数据分析模块还是必须要会的,横向拓展数据分析与挖掘技术栈也是很有必要的.本文将对Pandas.NumPy.SciPy.Matplotlib等分析挖掘库的安装和使用进行简 ...
- 数据分析:numpy和pandas基础操作详解
数据处理基础 numpy基础 1.numpy创建数组及基础属性 2.数组的特点 3.创建常见数组 4.数组数据类型 5.生成随机数 6.一维数组索引 7.布尔索引 8. 多维数组的索引 9.实际问题 ...
最新文章
- 加密解密-DES算法和RSA算法
- 无线网络(5) 无线网络安全性
- “生于忧患,死于安乐”之程序员人生
- 因封杀Adobe 美司法部对苹果展开反垄断调查
- 结构体里有指针 scanf赋值_C++|链表中常见的链表节点指针操作
- Oracle:select into 查询没有记录的解决办法
- java语言中json转换,JSON字符串和JAVA语言对象的相互转换教程
- 2.1 maven配置多镜像地址
- HTML统计用户浏览页面时间,如何使用JS代码计算用户浏览页面的时间呢?
- linux中改localhome名称,修改 /var/lib/locales/supported.d/local 文件(使用 locale -a 命令查看系統中所有已配置的 locale)...
- python十大必备知识_python学习必备知识汇总
- .sql导入中文显示乱码解决方法
- 拓端tecdat|R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_10 构造函数注入
- java 调用net remoting_获取 org.springframework.remoting.RemoteAccessException: 在进行调用时无法访问远程服务?...
- 仿win7 aero_在Windows 7中获取Aero风格的经典开始菜单
- 传染病模型-java代码
- vue点击按钮跳转路由
- 软考网络工程师选择题题目(含答案)
- PMSM矢量控制之RAMP_GEN