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基础简介以及运用相关推荐

  1. 【python数据分析模块教程】5——pyecahrts基础简介以及运用

    1.如何安装 1.进入cmd 2.conda env list 查看当前电脑中有多少个annaconda环境 图中表示当前电脑只有一个默认环境base 3.conda create --name ec ...

  2. Python数据分析第三期--简述Pandas

    Python数据分析第三期–简述Pandas 目录 文章目录 Python数据分析第三期--简述Pandas 目录 1. Pandas 的数据结构 1.1 Series 1.2 DataFrame 1 ...

  3. 【Python数据分析与可视化】Pandas统计分析-实训

    [Python数据分析与可视化]Pandas统计分析-实训 文章目录 [Python数据分析与可视化]Pandas统计分析-实训 导包 读取数据 分析数据 1.查看数据的描述和统计信息: 2.修改列名 ...

  4. Python数据分析入门教程(更新中)

    Python数据分析入门教程 你好! 这是一篇适用于初学者的Python数据分析入门教程 1. Numpy关于矩阵的操作 1.1数组与矩阵的基本概念 矩阵:矩阵是一个按照长方阵列排列的实数或复数集合( ...

  5. python数据分析系列教程——Pandas全解

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 起步 Pandas最初被作为金融数据分析工具而开发出来,因此 pandas 为时间序列分析提 ...

  6. python 数据分析模块_Python数据分析pandas模块用法实例详解

    本文实例讲述了Python数据分析pandas模块用法.分享给大家供大家参考,具体如下: pandas pandas10分钟入门,可以查看官网:10 minutes to pandas 也可以查看更复 ...

  7. Python数据分析之Numpy、Pandas与Matplotlib基础

    Python在数据科学中的作用 Python之所以能够成为大数据分析的主要工具,主要是因为他有很多现成的数据分析以及机器学习的工具包(Python中称为库),比如Numpy库.Pandas库.Scik ...

  8. python数据分析模块包括_数据开发必会 | Python数据分析模块

    作为数据开发,Python强大的数据分析模块还是必须要会的,横向拓展数据分析与挖掘技术栈也是很有必要的.本文将对Pandas.NumPy.SciPy.Matplotlib等分析挖掘库的安装和使用进行简 ...

  9. 数据分析:numpy和pandas基础操作详解

    数据处理基础 numpy基础 1.numpy创建数组及基础属性 2.数组的特点 3.创建常见数组 4.数组数据类型 5.生成随机数 6.一维数组索引 7.布尔索引 8. 多维数组的索引 9.实际问题 ...

最新文章

  1. 昨晚通宵把服务器格式化,重新配置环境。
  2. css 改变输入框光标颜色
  3. 看过曹县国际车展,我闯入了魔幻的塞伯坦
  4. 软件测试工程师门槛:新人如何做好功能测试?
  5. 机器学习及算法-python
  6. Linux Shell编程笔记一:相关命令
  7. 关于有默认值的字段在用EF做插入操作时的思考(续)
  8. box-shadow属性四个值_CSS常见属性和值
  9. 概要设计和详细设计(软件)
  10. 软件开发生命周期的管理
  11. php fakepath,javascript - chrome upload file 出现 fakepath,请解决方案
  12. 微信支付:手机系统自带的浏览器,调用微信支付如何实现(非扫码)
  13. 如何在Word中绘制流程图
  14. html把图片放到文章右边,怎么在文章中把图片放在文字的左边、右边、中 – 手机爱问...
  15. python打开谷歌浏览器新标签页_selenium chrome在新标签页打开链接的方法
  16. 一篇不错的网文 闻鸡起舞早耕耘,天道酬勤有志人
  17. telegraf介绍
  18. CSU2020期中测试模拟题1 问题 B: 小帅要缴税
  19. WordPress Blog Android客户端源码分析(一)
  20. P4318-莫比乌斯函数+容斥

热门文章

  1. matlab fourier变换反变换
  2. (附源码)springboot在线考试系统 毕业设计 160935
  3. what is VC维
  4. Error:In PaddlePaddle 2.x
  5. VCC VDD VSS
  6. 鹰软件测试简历自我,276关于老鹰的老炮儿片头的练习测试
  7. Hibernate中的方言
  8. 几乎全面的食品英文总结 (吃遍英文单词
  9. 如何用数字化构建企业的“韧性”?
  10. 第17篇 账户管理(助记词)