DataFrame 的用法

Pandas中的数据结构

数据框是指 :一种具有索引列的表格型数据结构,包含一个索引列和多个数据列。可以方便与外界的表格文件进行数据交换。

创建 DataFrame对象
import pandas as pd
dict = {'name':['张三','李四','王五'],'age':[18,20,19],'sex':['男','女','男'],'no':['001','002','003']}
df1 = pd.DataFrame(dict)
df1.index.name = 'id'
DataFrame 查询操作
df1.age #获取整列数据和索引
row = df1.iloc[2]
DataFrame 增加操作
df2 = df1._append([{'name':'小二','age':21,'sex':'男','no':'004'}],ignore_index = True)#增加多行

# ignore_index = False表示索引从0开始 True表示索引列按顺序累计
dict1 = {'name':['小二','李四','王五','王五','王五'],'age':[20,20,19,21,19],'sex':['男','女','男','男','男'],'no':['004','002','003','003','003']}
df2 = df1._append([pd.DataFrame(dict1)],ignore_index = True)#增加多行
df2['new_col'] = [1,2,3,4,5,6,7,8] #增加一列

name age sex no new_col
0 张三 18 男 001 1
1 李四 20 女 002 2
2 王五 19 男 003 3
3 小二 20 男 004 4
4 李四 20 女 002 5
5 王五 19 男 003 6
6 王五 21 男 003 7
7 王五 19 男 003 8

df3 = pd.DataFrame({'height':[177,155,180,185,160,180,175,180]})
df4 = pd.concat([df2,df3],axis=1)#按列添加

df3 = pd.DataFrame({'name':['小二'],'age':[20],'sex':['男'],'no':['004'],'height':[177],'new_col':[9]})
df4 = pd.concat([df2,df3],axis=0,ignore_index = True) #按行添加
DataFrame 删除操作
df3 = df2.drop(['name'],axis= 1) #删除一列数据
df3 = df2.drop([2]) #删除一行数据
'''
df.drop_duplicates(keep= , subset=[], inplace= )
keep: {‘first’, ‘last’, False},默认为’first’
保留项。保留第一个(first)/最后一个(last)/不保留(False)重复的项
subset:默认所有列
指定的列。即需要删除哪些列中重复的项,列用’'说明,用,隔开
inplace : {‘True’,‘False’},默认为False
是否在原数据上修改。False表示另存一个副本
'''
df2.drop_duplicates(keep = False,subset = ['age','name'],inplace = True)#去除重复的项
print(df2)

name age sex no new_col
0 张三 18 男 001 1
3 小二 20 男 004 4
6 王五 21 男 003 7

DataFrame 特殊操作
dates = pd.date_range('2023/3/15',freq='7D',periods= 3)
df2.index = dates
print(df2)
       name  age sex   no  new_col

2023-03-15 张三 18 男 001 1
2023-03-22 小二 20 男 004 4
2023-03-29 王五 21 男 003 7

DataFrame 时间序列查询
df3 = df2.loc['2023-3-10':'2023-3-25',['name','sex']]
print(df3)
       name sex

2023-03-15 张三 男
2023-03-22 小二 男

DataFrame 转换为其它数据结构
print('DataFrame 转 ndarray\n',df2.values)
print('df2.values数据类型:',type(df2.values))

DataFrame 转 ndarray
[[‘张三’ 18 ‘男’ ‘001’ 1]
[‘小二’ 20 ‘男’ ‘004’ 4]
[‘王五’ 21 ‘男’ ‘003’ 7]]
df2.values数据类型: <class ‘numpy.ndarray’>

print('DataFrame 转 Series\n',df2['name'])
print("df2['name'] 数据类型:",type(df2['name']))

DataFrame 转 Series
2023-03-15 张三
2023-03-22 小二
2023-03-29 王五
Freq: 7D, Name: name, dtype: object
df2[‘name’] 数据类型: <class ‘pandas.core.series.Series’>

#数组和字典组合成一张表存如csv文件
name_list =["北京","天津","河北","山西","内蒙古","辽宁"]
 name_list =[
    "北京",
    "天津",
    "河北",
    "山西",
    "内蒙古",
    "辽宁",]
data_gdp = {
    2011: [
        16251.93,
        11307.28,
        24515.76,
        11237.55,
        14359.88,
        22226.7
    ],
    2010: [
        14113.58,
        9224.46,
        20394.26,
        9200.86,
        11672,
        18457.27 
    ],
    2009: [
        12153.03,
        7521.85,
        17235.48,
        7358.31,
        9740.25,
        15212.49
    ],
    2008: [
        11115,
        6719.01,
        16011.97,
        7315.4,
        8496.2,
        13668.58
    ]
}   
data_gdp =pd.DataFrame(data_gdp)
index = pd.Series(name_list)
data_gdp = data_gdp.set_index(index)#设置索引列

data_gdp = data_gdp.T#转置
data_gdp.index.name = 'year'#设置索引列名称
data_gdp['max'] = data_gdp.max(axis=1).astype(int) #求一行数据的最大值
data_gdp['sum'] = data_gdp.sum(axis=1).astype(int)#求一行数据的的和
#按索引圣墟排列ascending = True ,降序False
data_gdp = data_gdp.sort_values(by = ['year'],ascending = True) 
print(data_gdp)
data_gdp.to_csv('data/data_gdp.csv')
        北京        天津        河北        山西       内蒙古        辽宁    max     sum

year
2008 11115.00 6719.01 16011.97 7315.40 8496.20 13668.58 16011 79337
2009 12153.03 7521.85 17235.48 7358.31 9740.25 15212.49 17235 86456
2010 14113.58 9224.46 20394.26 9200.86 11672.00 18457.27 20394 103456
2011 16251.93 11307.28 24515.76 11237.55 14359.88 22226.70 24515 124414

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值