pandas使用总结(很详细!)

一,pandas介绍:

       pandas是BSD许可的开源库,为Python编程语言提供了高性能,易于使用的数据结构和数据分析工具。长期以来,Python在处理数据和准备数据方面一直很出色,但在数据分析和建模方面却不那么出色。pandas帮助填补了这一空白,使您能够在Python中执行整个数据分析工作流,而不必切换到R等更具领域特定性的语言。与出色的IPython工具包和其他库结合使用,在Python中进行数据分析的环境在性能,生产力和协作能力方面表现出色。
 
       pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
 

在这里插入图片描述

二,pandas的使用:

Series:一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近。

DataFrame:二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。

1.导包:

import pandas as pd
import numpy as np
from pandas import Series,DataFrame

 
Series操作
 

2.Series创建:

a1 = Series([1,2,3,4])
a2 = Series([1,2,3,4],index=['a','b','c','d'])
a3 = Series({'a':1, 'b':2, 'c':3})
a4 = Series(np.array([1,2,3]))

 
3.Series显示索引:
 

obj = Series({'a':10,'b':12,'c':17})

obj.loc['a']
输出:
10

obj['a':'c']
输出:
a    10
b    12
c    17
dtype: int64

 
4.Series隐式索引:
 

obj = Series({'a':10,'b':12,'c':17})

obj[0:1]
输出
a    10
dtype: int64


obj.iloc[0]
输出:
10


obj.iloc[0:1]
输出:

a    10
dtype: int64

 
5.Series之间的运算:在运算中自动对齐不同索引的数据
如果索引不对应,则补NaN

 

A = pd.Series([2,4,6],index=[0,1,2])
B = pd.Series([1,3,5],index=[1,2,3])

display(A,B)
输出:
0    2
1    4
2    6
dtype: int64
1    1
2    3
3    5
dtype: int64

A+B
输出:
0    NaN
1    5.0
2    9.0
3    NaN
dtype: float64

 
DataFrame操作:
 

6.DataFrame创建:

data = {'color':['blue','green','yellow','red','white'],
       'object':['ball','pen','pencil','paper','mug'],
       'price':[1.2,1.0,0.6,0.9,1.7]}
frame = DataFrame(data,columns=['color','object','price','weight'],
                 index = ['one','two','three','four','five'])
frame

输出:

		color	    object	   price	    weight
one		blue		ball	   1.2			NaN
two		green	    pen	   	   1.0			NaN
three   yellow	    pencil	   0.6			NaN
four	red		    paper	   0.9			NaN
five	white		mug	       1.7			NaN  

DataFrame索引:
 

7.对列进行索引:

frame['color']
one        blue
two       green
three    yellow
four        red
five      white
Name: color, dtype: object

 
8.对行进行索引:

  • 使用.ix[]来进行行索引

  • 使用.loc[]加index来进行行索引

  • 使用.iloc[]加整数来进行行索引

frame.ix['one']
color     blue
object    ball
price      1.2
weight     NaN
Name: one, dtype: object

frame.loc["two"]
输出:
color     green
object      pen
price         1
weight      NaN
Name: two, dtype: object

frame.iloc[0:10]
		  color	    object	price	weight
one	      blue      ball	1.2	    NaN
two	      green	    pen		1.0 	NaN
three	  yellow 	pencil	0.6 	NaN
four	  red		paper	0.9 	NaN
five	  white		mug		1.7 	NaN

 
9. 连接mysql数据库:
 

import pymysql
conn = pymysql.connect(host = 'localhost',port = 3306,database = 'dushu',user = 'softpo',
                password = 'root',charset = 'utf8')
                
df  = pd.read_sql('select * from books',conn)
display(df.shape,df.head())

# 精确查询
df.query("book_name == '主人的溃败'")

# 模糊查询,like 像
df.query("book_name like  '%的%'")

 
10,mysql pandas + pymysql只能读取,不能写入
 

#pip install mysqlclient
#pip install sqlalchemy

import sqlalchemy
engine = sqlalchemy.create_engine('mysql+mysqldb://softpo:root@localhost/dushu?charset=utf8')

df2.to_sql('book211',engine,index=False)

with engine.connect() as conn:
#     修改了主键,增删改查都可以
# unsigned int8 - 128 ~ 127 无符号 0 ~ 255
    conn.execute('alter table book985 change id id int unsigned not null auto_increment primary key;')
    
for i in df:
    print(i)
# 工作中,高性能工作,很好处理数据库中的数据了

 
11.导入数据:

pd.read_csv(filename):			从csv文件导入数据

 
12.导出数据

pd.to_csv(filename):			导出数据

 
13.查看数据:

df.head(n):		查看dataframe对象的前n行
df.tail(n):		查看后n行
df.shape()		查看行数和列数

 
14.数据选取:

df[col];		    根据列名选取,并以Series的形式返回列
df[[col1,col2]]:	以dataframe形式返回多列
s.iloc[0]:			按照位置选取数据
s.lloc['index_one']:按索引选取数据
df.iloc[0,:]:		返回第一行
df.iloc[0,0]:		返回第一列的第一个元素

 
15…数据统计:

df.describe():		查看数据值得汇总统计
df.mean():		    返回列的均值
df.corr():			返回列与列之间的相关系数
df.count():		    返回列中非空值得个数
df.max()			返回每一列的最大值
df.min()			返回每一列的最小值
df.median()		    返回每一列的中位数
df.std():			返回每一列的标准差

 
16.数据合并:

df1.append(df2):		        将df2中的每行添加到df1的尾部
df.concat([df1,df2],axis=1)		将df2中的列添加到df1的尾部
df1.join(df2,on = col1,how = 'inner')		对df1的列和df2的列执行SQL形式的join

 
17.数据处理:

df[df[col] > 5]:			选择col列的值大于5的行

df.slues(col1)ort_va:		按照列col1排序数据,默认升序排列

df.sort_values(col2,ascending=False)	按照列col1降序排列数据

df.sort_values([col1,col2], ascending=[True,False]):先按列col1升序排列,后按col2降序排列数据

df.groupby(col):            返回一个按列col进行分组的Groupby对象

df.groupby([col1,col2]):    返回一个按多列进行分组的Groupby对象

df.groupby(col1)[col2]:     返回按列col1进行分组后,列col2的均值

df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表

df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值

data.apply(np.mean):        对DataFrame中的每一列应用函数np.mean

data.apply(np.max,axis=1):  对DataFrame中的每一行应用函数np.max

 
18.数据清理:

df[df[col] > 0.5]:         选择col列的值大于0.5的行

df.sort_values(col1):      按照列col1排序数据,默认升序排列

df.sort_values(col2, ascending=False):按照列col1降序排列数据

df.sort_values([col1,col2], ascending=[True,False]):先按列col1升序排列,后按col2降序排列数据

df.groupby(col):            返回一个按列col进行分组的Groupby对象

df.groupby([col1,col2]):    返回一个按多列进行分组的Groupby对象

df.groupby(col1)[col2]:     返回按列col1进行分组后,列col2的均值

df.pivot_table(index=col1, values=[col2,col3], aggfunc=max):创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表

df.groupby(col1).agg(np.mean):返回按列col1分组的所有列的均值

data.apply(np.mean):         对DataFrame中的每一列应用函数np.mean

data.apply(np.max,axis=1):   对DataFrame中的每一行应用函数np.max

记得点赞哦!!!

在这里插入图片描述

  • 9
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值