pandas基础教程
一维数组的创建Series()
Series(data= None ,
index= None ,
dtype= None ,
name= None ,
copy= False ,
fastpath= False
)
import pandas as pd
se = pd. Series( [ 1 , 2 , 3 ] , index= [ 'name' , 'age' , 'sex' ] , name= '12' )
se
name 1
age 2
sex 3
Name: 12, dtype: int64
DataFrame( data= None ,
index= None ,
columns= None ,
dtype= None ,
copy= False
)
import pandas as pd
arr = [ [ '晓晓' , '潇潇' , '潇潇' , '潇潇' , '潇潇' , '潇潇' ] , [ 1 , 2 , 2 , 2 , 8 , 18 ] ]
data = pd. DataFrame( arr, index= [ 'name' , 'sex' ] , columns= [ 2 , 2 , 2 , 2 , 2 , 2 ] )
print ( data)
dic = {
'name' : [ '小夏' , '西瓜君' , '水果' ] ,
'sex' : [ 2 , 2 , 2 ]
}
pds = pd. DataFrame( dic)
pds
2 2 2 2 2 2
name 晓晓 潇潇 潇潇 潇潇 潇潇 潇潇
sex 1 2 2 2 8 18
文件读取
pandas. read_table(
filepath_or_buffer,
sep= ’\t’,
header= ’infer’,
names= None ,
index_col= None ,
dtype= None ,
engine= None ,
nrows= None
)
pandas. read_csv(
filepath_or_buffer,
sep= ’\t’,
header= ’infer’,
names= None ,
index_col= None ,
dtype= None ,
engine= None ,
nrows= None
)
pandas. read_excel(
io,
sheetname= 1 ,
header= 0 ,
index_col= None ,
names= None ,
dtype= None
nrows= None
)
File "<ipython-input-42-edd0a824dcf8>", line 4
sep=’\t’, #以什么分割
^
SyntaxError: invalid character in identifier
import pandas as pd
data = pd. read_excel( 'E:\meal_order_detail.xlsx' , nrows= 5 )
print ( data[ 'dishes_name' ] )
dvs1 = pd. read_csv( './order-14.3.csv' , nrows= 5 , encoding= 'gbk' )
print ( dvs1[ '成交时间' ] )
0 蒜蓉生蚝
1 蒙古烤羊腿\r\n\r\n\r\n
2 大蒜苋菜
3 芝麻烤紫菜
4 蒜香包
Name: dishes_name, dtype: object
0 2017/1/3 9:56
1 2017/1/3 9:56
2 2017/1/3 9:56
3 2017/1/3 9:56
4 2017/1/3 9:56
Name: 成交时间, dtype: object
DataPrame基础属性
import pandas as pd
dvs1 = pd. read_csv( './order-14.3.csv' , nrows= 5 , encoding= 'gbk' )
index_data = dvs1. index
print ( 'index_data方法%s' % index_data)
columns_data = dvs1. columns
print ( 'columns_data方法:%s' % ( columns_data) )
dtypes_data = dvs1. dtypes
print ( 'dtypes_data方法:%s' % ( dtypes_data) )
values_data = dvs1. values
print ( 'values_data方法:%s' % ( values_data) )
ndim_data = dvs1. ndim
print ( 'ndim_data方法:%s' % ( ndim_data) )
shape_data = dvs1. shape
print ( 'shape_data方法:' , ( shape_data) )
memory_usage_data = dvs1. memory_usage
print ( 'empty_data方法:%s' % ( memory_usage_data) )
empty_data = dvs1. empty
print ( 'empty_data方法:%s' % ( empty_data) )
size_data = dvs1. size
print ( 'size_data方法:%s' % ( size_data) )
axes_data = dvs1. axes
print ( 'axes_data方法:%s' % ( axes_data) )
index_data方法RangeIndex(start=0, stop=5, step=1)
columns_data方法:Index(['商品ID', '类别ID', '门店编号', '单价', '销量', '成交时间', '订单ID'], dtype='object')
dtypes_data方法:商品ID int64
类别ID int64
门店编号 object
单价 float64
销量 float64
成交时间 object
订单ID object
dtype: object
values_data方法:[[30006206 915000003 'CDNL' 25.23 0.32799999999999996 '2017/1/3 9:56'
'20170103CDLG000210052759']
[30163281 914010000 'CDNL' 2.0 2.0 '2017/1/3 9:56'
'20170103CDLG000210052759']
[30200518 922000000 'CDNL' 19.62 0.23 '2017/1/3 9:56'
'20170103CDLG000210052759']
[29989105 922000000 'CDNL' 2.8 2.044 '2017/1/3 9:56'
'20170103CDLG000210052759']
[30179558 915000100 'CDNL' 47.41 0.226 '2017/1/3 9:56'
'20170103CDLG000210052759']]
ndim_data方法:2
shape_data方法: (5, 7)
empty_data方法:<bound method DataFrame.memory_usage of 商品ID 类别ID 门店编号 单价 销量 成交时间 \
0 30006206 915000003 CDNL 25.23 0.328 2017/1/3 9:56
1 30163281 914010000 CDNL 2.00 2.000 2017/1/3 9:56
2 30200518 922000000 CDNL 19.62 0.230 2017/1/3 9:56
3 29989105 922000000 CDNL 2.80 2.044 2017/1/3 9:56
4 30179558 915000100 CDNL 47.41 0.226 2017/1/3 9:56
订单ID
0 20170103CDLG000210052759
1 20170103CDLG000210052759
2 20170103CDLG000210052759
3 20170103CDLG000210052759
4 20170103CDLG000210052759 >
empty_data方法:False
size_data方法:35
axes_data方法:[RangeIndex(start=0, stop=5, step=1), Index(['商品ID', '类别ID', '门店编号', '单价', '销量', '成交时间', '订单ID'], dtype='object')]
索引、迭代
import pandas as pd
dvs = pd. read_csv( './order-14.3.csv' , nrows= 5 , encoding= 'gbk' )
print ( dvs. head( ) )
print ( dvs. at[ 1 , '类别ID' ] )
print ( dvs. iat[ 1 , 4 ] )
print ( '修改以前的值' , dvs. loc[ : 6 , '单价' ] )
dvs. loc[ : 2 , '单价' ] = 26.00
print ( '修改以后的值' , dvs. loc[ : 6 , '单价' ] )
print ( dvs. loc[ dvs[ "单价" ] > 10 , [ '商品ID' , '单价' ] ] )
print ( 'iloc' , dvs. iloc[ 1 ] )
itme = dvs. items( )
print ( next ( itme) )
print ( dvs. keys( ) )
商品ID 类别ID 门店编号 单价 销量 成交时间 \
0 30006206 915000003 CDNL 25.23 0.328 2017/1/3 9:56
1 30163281 914010000 CDNL 2.00 2.000 2017/1/3 9:56
2 30200518 922000000 CDNL 19.62 0.230 2017/1/3 9:56
3 29989105 922000000 CDNL 2.80 2.044 2017/1/3 9:56
4 30179558 915000100 CDNL 47.41 0.226 2017/1/3 9:56
订单ID
0 20170103CDLG000210052759
1 20170103CDLG000210052759
2 20170103CDLG000210052759
3 20170103CDLG000210052759
4 20170103CDLG000210052759
914010000
2.0
修改以前的值 0 25.23
1 2.00
2 19.62
3 2.80
4 47.41
Name: 单价, dtype: float64
修改以后的值 0 26.00
1 26.00
2 26.00
3 2.80
4 47.41
Name: 单价, dtype: float64
商品ID 单价
0 30006206 26.00
1 30163281 26.00
2 30200518 26.00
4 30179558 47.41
iloc 商品ID 30163281
类别ID 914010000
门店编号 CDNL
单价 26
销量 2
成交时间 2017/1/3 9:56
订单ID 20170103CDLG000210052759
Name: 1, dtype: object
('商品ID', 0 30006206
1 30163281
2 30200518
3 29989105
4 30179558
Name: 商品ID, dtype: int64)
Index(['商品ID', '类别ID', '门店编号', '单价', '销量', '成交时间', '订单ID'], dtype='object')
聚合 函数的
DataFrame. apply ( func,
axis= 0 ,
broadcast= False ,
raw= False ,
reduce = None , 接收boolearn或者None 。表示返回值的格式。默认None 。
args= ( ) ,
** kwds、
import pandas as pd
data = pd. read_csv( './order-14.3.csv' , nrows= 5 , encoding= 'gbk' )
import pandas as pd
import numpy as np
data = pd. read_csv( './order-14.3.csv' , nrows= 5 , encoding= 'gbk' )
data[ '单价' ] . agg( [ np. sum , np. mean] )
sum 97.060
mean 19.412
Name: 单价, dtype: float64
DataFrame. groupby( by= None ,
axis= 0 ,
level= None ,
as_index= True ,
sort= True ,
group_keys= True ,
squeeze= False ,
** kwargs)
分组函数
data. groupby( '门店编号' ) . agg( [ np. sum , np. mean] )
商品ID 类别ID 单价 销量 sum mean sum mean sum mean sum mean 门店编号 CDNL 150538668 30107733.6 4588010103 917602020.6 97.06 19.412 4.828 0.9656
data. describe( )
商品ID 类别ID 单价 销量 count 5.000000e+00 5.000000e+00 5.000000 5.000000 mean 3.010773e+07 9.176020e+08 19.412000 0.965600 std 1.015305e+05 4.035082e+06 18.687674 0.965347 min 2.998910e+07 9.140100e+08 2.000000 0.226000 25% 3.000621e+07 9.150000e+08 2.800000 0.230000 50% 3.016328e+07 9.150001e+08 19.620000 0.328000 75% 3.017956e+07 9.220000e+08 25.230000 2.000000 max 3.020052e+07 9.220000e+08 47.410000 2.044000
pd. Timestamp(
data,
freq ,
start,
periods,
en,
tz,
name
)
DatetimeIndex
PeriodIndex
import pandas as pd
data = pd. read_csv( './order-14.3.csv' , nrows= 5 , encoding= 'gbk' )
dt = pd. DatetimeIndex( data[ '成交时间' ] )
print ( dt)
print ( dt. year)
DatetimeIndex(['2017-01-03 09:56:00', '2017-01-03 09:56:00',
'2017-01-03 09:56:00', '2017-01-03 09:56:00',
'2017-01-03 09:56:00'],
dtype='datetime64[ns]', name='成交时间', freq=None)
Int64Index([2017, 2017, 2017, 2017, 2017], dtype='int64', name='成交时间')
加减时间
)
透视表
pands. pivot_table( data,
values= None ,
index= None ,
columns= None ,
aggfunc= 'mean' ,
fill_value= None ,
margins= False ,
dropna= True ,
margins_name= 'All' )
pandas. crosstab( index,
columns,
values,
aggfunc ,
rownames ,
colnames,
dropna ,
margins,
normalize,
)
DataFrame. applymap( 自我、函数) 一个函数应用于Dataframe elementwise。
DataFrame. add( 自我, 其他[ , 轴, 水平, …] ) 除了dataframe和其他, element- wise( 二元运算符添加) 。
DataFrame. sub( 自我, 其他[ , 轴, 水平, …] ) 减法dataframe和其他, element- wise( 二元运算符子) 。
DataFrame. mul( 自我, 其他[ , 轴, 水平, …] ) 乘法dataframe和其他, element- wise( 二元运算符mul) 。
DataFrame. div( 自我, 其他[ , 轴, 水平, …] ) 获得浮动dataframe分工和其他element- wise( 二元运算符truediv) 。
DataFrame. dropna( 自我, 轴, 如何打, …) ) 删除缺失值。
DataFrame. fillna( 自我、价值、方法、…) ) 使用指定的方法填补NA / NaN值。
DataFrame. replace( 自我( to_replace, 价值, …) ) 替换值了to_replace与价值。
DataFrame. interpolate( 自我、方法、轴, …) ) 根据不同的方法插入值。
DataFrame. drop( 自我( 标签、轴、索引…) ) 删除指定行或列的标签。
DataFrame. drop_duplicates( 自我[ 子集, …) 返回DataFrame删除重复的行, 选择只考虑某些列。
DataFrame. append( 自我, 其他[ …] ) 添加行其他的调用者返回一个新的对象。
DataFrame. assign( 自我\ * \ * kwargs) DataFrame分配新列。
DataFrame. join( 自我, 其他[ , , , …) 另一个DataFrame的连接列。
DataFrame. merge( 自我, 右( , , , …) ) 合并DataFrame或命名的系列对象数据库样式加入。
DataFrame. update( 自我, 其他( 加入, …) ) 从另一个DataFrame使用non- NA值修改到位。