python学习——pandas基础操作

Series类

series是以为表格,每个元素带有标签且有下标,兼具列表和字典的访问形式

1 创建

In [13]: import pandas as pd

In [14]: pd.Series(data=[80,90,100],index=['语文','数学','英语'])
Out[14]:
语文     80
数学     90
英语    100
dtype: int64

2 查找与切片

a = pd.Series(data=[80,90,100],index=['语文','数学','英语'])
In [20]: a
Out[20]:
语文     80
数学     90
英语    100
dtype: int64

In [21]: a[0]
Out[21]: 80

In [22]: a['语文']
Out[22]: 80

In [23]: a[0:2]
Out[23]:
语文    80
数学    90

In [25]: a[0:2]['语文']
Out[25]: 80

In [26]: a.index
Out[26]: Index(['语文', '数学', '英语'], dtype='object')

3 增加删除

#增加元素
In [27]: a['体育']=60

In [28]: a
Out[28]:
语文     80
数学     90
英语    100
体育     60
dtype: int64

#删除元素
In [29]: a.pop('体育')
Out[29]: 60

In [30]: a
Out[30]:
语文     80
数学     90
英语    100
dtype: int64

4 数学运算

In [33]: a
Out[33]:
语文     80
数学     90
英语    100
dtype: int64

In [34]: a.sum()
Out[34]: 270

In [35]: a.max()
Out[35]: 100

In [36]: a.min()
Out[36]: 80

In [37]: a.mean()
Out[37]: 90.0

In [38]: a.median()
Out[38]: 90.0

#输出下标
In [39]: a.idxmax()
Out[39]: '英语'

In [40]: a.idxmin()
Out[40]: '语文'

DataFrame类

1 构造和访问

In [41]: scores = [['男',108,115,97],['女',115,87,105],['女',100,60,130],^M
    ...:             ['男',112,80,50]]^M
    ...: names = ['刘一哥','王二姐','张三妹','李四弟']^M
    ...: courses = ['性别','语文','数学','英语']^M
    ...:

In [42]: df = pd.DataFrame(data=scores,index = names,columns = courses)^M
    ...:

In [43]: df
Out[43]:
    性别   语文   数学   英语
刘一哥  男  108  115   97
王二姐  女  115   87  105
张三妹  女  100   60  130
李四弟  男  112   80   50

In [49]: df.values
Out[49]:
array([['男', 108, 115, 97],
       ['女', 115, 87, 105],
       ['女', 100, 60, 130],
       ['男', 112, 80, 50]], dtype=object)
 
 #访问行
 In [53]: df.loc['王二姐']
Out[53]:
性别      女
语文    115
数学     87
英语    105
Name: 王二姐, dtype: object
#访问列
In [51]: df['语文']
Out[51]:
刘一哥    108
王二姐    115
张三妹    100
李四弟    112
Name: 语文, dtype: int64

2 切片

#1行切片
#1.1iloc[行选择器, 列选择器]		用下标做切片
In [55]: df.iloc[1:3]
Out[55]:
    性别   语文  数学   英语
王二姐  女  115  87  105
张三妹  女  100  60  130
#1.2 #loc[行选择器, 列选择器]		用标签做切片

In [57]: df.loc['王二姐':'张三妹']
Out[57]:
    性别   语文  数学   英语
王二姐  女  115  87  105
张三妹  女  100  60  130

#列切片
In [59]: df.loc[:,'性别':'数学']
Out[59]:
    性别   语文   数学
刘一哥  男  108  115
王二姐  女  115   87
张三妹  女  100   60
李四弟  男  112   80
In [60]: df.iloc[:,1:3]
Out[60]:
      语文   数学
刘一哥  108  115
王二姐  115   87
张三妹  100   60
李四弟  112   80

3 分析统计

#转置
In [61]: df.T
Out[61]:
    刘一哥  王二姐  张三妹  李四弟
性别    男    女    女    男
语文  108  115  100  112
数学  115   87   60   80
英语   97  105  130   50
#按语文成绩降序排列
In [62]: df.sort_values('语文',ascending=False)
Out[62]:
    性别   语文   数学   英语
王二姐  女  115   87  105
李四弟  男  112   80   50
刘一哥  男  108  115   97
张三妹  女  100   60  130

print(df.sum()['语文'],df.mean()['数学'],df.median()['英语']) 
#>>435 85.5 101.0  语文分数之和、数学平均分、英语中位数
print(df.min()['语文'],df.max()['数学'])  
#>>100 115   语文最低分,数学最高分
print(df.max(axis = 1)['王二姐'])	#>>115 王二姐的最高分科目的分数
print(df['语文'].idxmax()) 	#>>王二姐	语文最高分所在行的标签


#打印出语文>100且数学>85的所有行
In [63]: print(df.loc[(df['语文'] > 100) & (df['数学'] >= 85)]) ^M
    ...:
    性别   语文   数学   英语
刘一哥  男  108  115   97
王二姐  女  115   87  105

4 增删和修改

  • 增加和修改
print("---下面是DataFrame的增删和修改---")
df.loc['王二姐','英语'] = df.iloc[0,1] = 150 #修改王二姐英语和刘一哥语文成绩
df['物理'] = [80,70,90,100]		#为所有人添加物理成绩这一列

df.insert(1,"体育",[89,77,76,45]) 		#为所有人插入体育成绩到第1列
In [65]: df
Out[65]:
    性别  体育   语文   数学   英语
刘一哥  男  89  108  115   97
王二姐  女  77  115   87  105
张三妹  女  76  100   60  130
李四弟  男  45  112   80   50

df.loc['李四弟'] = ['男',100,100,100,100,100] #修改李四弟全部信息
df.loc[:,'语文'] = [20,20,20,20]			#修改所有人语文成绩
df.loc['钱五叔'] =  ['男',100,100,100,100,100] 	#加一行
df.loc[:,'英语'] += 10					#>>所有人英语加10分
df.columns = ['性别','体育','语文','数学','English','物理'] #改列标签

In [70]: df.columns=['性别','体育','语文','数学','Engilsh']

In [71]: df
Out[71]:
    性别  体育   语文   数学  Engilsh
刘一哥  男  89  108  115       97
王二姐  女  77  115   87      105
张三妹  女  76  100   60      130
李四弟  男  45  112   80       50
  • 删除
df.drop( ['体育','物理'],axis=1, inplace=True) #删除体育和物理成绩
df.drop( '王二姐',axis = 0, inplace=True)      #删除 王二姐那一行
df.drop([df.index[i] for i in range(1,3)],axis=0,inplace = True) 
#删除第1,2行
df.drop([df.columns[i] for i in range(3)],axis = 1,inplace = True) #删除第0到2列

5 文件操作

在这里插入图片描述

  • pd.read_excel 读取文档
dt = pd.read_excel("excel_sample.xlsx",sheet_name=['销售情况',1],
		   index_col=0)#读取第0和第1张工作表,设置索引为第0列
df = dt['销售情况']		#dt是字典,df是DataFrame
print(df.iloc[0,0],df.loc['睡袋','数量']) 	#>>4080 4080
print(pd.isnull(df.loc['彩盒','销售额']))	#>>True
df.fillna(0,inplace=True)			#将所有NaNa用0替换
print(df.loc['彩盒','销售额'],df.iloc[2,2])	#>>0.0 0.0
  • df.to_excel(filename,sheet_name=“sheet1”,na_rep=‘’…)写入文档
writer = pd.ExcelWriter("new.xlsx")		#创建ExcelWriter对象
df.to_excel(writer,sheet_name="S1")
df.T.to_excel(writer,sheet_name="S2")		#转置矩阵写入
df.sort_values('销售额',ascending= False).to_excel(writer,
                                              sheet_name="S3")
#按销售额排序的新DataFrame写入工作表S3
df['销售额'].to_excel(writer,sheet_name="S4") 	#只写入一列
writer.save()

分组求和

在这里插入图片描述

df3 = df2.groupby(['产品类别'])[['数量','销售额','成本']].sum()

在这里插入图片描述

UniApp 是一款基于 Vue.js 的跨平台应用开发框架,它允许开发者构建一套代码,同时在多个平台上运行,如微信小程序、H5、Android、iOS 等。对于使用 UniApp 进行开发的应用,集成 Zalo 登录功能,你需要做以下几个步骤: 1. **引入依赖**:首先,在项目中安装 Zalo SDK,可以在 `uni-app` 的插件市场搜索 "zalo login" 或者直接在项目配置文件 `.babelrc` 中添加相关的依赖。 ```json // 如果使用 NPM npm install @dcloudio/zalo-login // 如果使用 Yarn yarn add @dcloudio/zalo-login ``` 2. **注册应用**:在 Zalo 开发者控制台创建一个新的应用,并获取 App Key 和 App Secret。 3. **配置 SDK**:在 UniApp 的 App.vue 或其他合适的入口文件里,初始化并配置 Zalo SDK,通常会涉及设置 App Key。 ```javascript import ZaloLogin from '@dcloudio/zalo-login' ZaloLogin.init({ appKey: 'your_app_key', appSecret: 'your_app_secret', }) ``` 4. **处理登录流程**:在需要用户登录的地方调用 SDK 的 `login` 方法打开 Zalo 登录页面,然后处理用户的登录结果,通过回调函数处理登录成功或失败的情况。 ```javascript ZaloLogin.login().then((res) => { // 用户已登录,可以获取 token 或者存储用户信息 }).catch((err) => { // 处理登录错误 }) ``` 5. **保存用户状态**:登录后,你可以将用户的标识存储在本地或者云服务中,以便后续在应用内识别和使用。 注意,每个平台对登录授权可能有不同的要求,确保你在实际部署到各个平台上时遵循相应的权限策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值