学习Python,像Excel一样使用pandas

Pandas知识点-详解行列级批处理函数apply pandas系列:优雅的apply函数。 阅读详情

欢迎关注微信公众号:excelwork

一直以来,Excel一直作为一个高效的数据展示、处理、分析的工具被我们使用,但随着处理量增大,不可避免的遇到长时间等待响应或干脆“未响应”。因此,我们需要找到替代工具来避免此类问题,Python中的pandas是如何像Excel一样处理数据呢。

    先构造示例数据(python3):

import pandas as pddata=pd.DataFrame([{2,5,6,7,8},(2,5,6,7,8),[12,31,4,5,6],range(11,111,20),range(9,23,3)],                  columns=['col_a','col_b','col_c','col_d','col_e'],                  index=['row_1','row_2','row_3','row_4','row_5'])

一、数据筛选、替换 

1.1 数据筛选

    我们通常使用去除重复项功能,目的就在于此,pandas中使用drop_duplicates函数实现,参数默认情况下是保留重复值中的一个,或者keep='first'。

print(data[data['col_a']>2])#或者print(data[data.loc[:,'col_a']>2])

    可以看到,col_a列数值大于2的数据已经被筛选出来了。

1.2 数据替换

1.2.1 一对一替换

    pandas有replace函数,可直接使用。

print(data.replace(2,111))#或者data.loc[data['col_a']==2,'col_a']=222print(data)

    可以看到,col_a列数值等于2的数据被替换成了111。

1.2.2 多对多替换  

      或者,我们也可以批量替换。

    比如将等于2的,替换为222,等于5的替换为555,两个列表个数相同,会按对应的顺序替换;

print(data.replace([2,5],[222,555]))

1.2.3 多对一替换  

    如果个数不同,替换后的值不能使用列表,要替换的值可以使用列表;

print(data.replace([2,5,6],222))

1.2.4 整列替换

    对整列数据批量替换成同一值;直接赋值即可。​​​​​​​

data['col_a']=123print(data)

 

二、删除重复项 

2.1 重复值保留一个 

    我们通常使用去除重复项功能,目的就在于此,pandas中使用drop_duplicates函数实现,参数默认情况下是保留重复值中的一个,或者keep='first'。

print(data.drop_duplicates(keep='first'))

    可以看到,row_2行数据被删除,保留了row_1行数据。

2.2 重复值全部删除 

   方法适用于不需要保留出现重复数据记录的场景,通常我们在excel里很能直接点击操作处理,不过在pandas中仍使用drop_duplicates函数实现,只需要将keep=False即可。

print(data.drop_duplicates(keep=False))

    可以看到,row_1~2两行数据都被删除,只保留了没重复的row_3~5行数据。

2.3 只保留重复值 

   存在这样的场景,我们需要拿到重复的数据,分析是由于什么场景导致的分析。好,我们继续使用drop_duplicates函数,只多了一步构造:

  1. 先根据keep=False得到剔除重复值的数据集(输出row_3~5);

  2. 再使用append将重复值保留一个的dataframe(即将不重复数据集构造成有重复值的数据集,输出row_3~5+row_1+row_3~5)

  3. 最后去重,就会将原来不重复的数据剔除了(输出row_1)

print(data.drop_duplicates(keep='first'))

    可以看到,row_2行数据被删除,保留了row_1行数据。

三、排序 

3.1 根据某一字段升降序

    排序函数直接使用sort_values,通过by选择排序依据的字段,根据参数ascending判别是升序还是降序。下面数据集通过col_a列数值大小升序:

print(data.sort_values(by='col_a',ascending=True))

3.2 根据多字段升降序

   通过col_a列数值升序,col_c列降序,可使用列表存放。

print(data.sort_values(by=['col_a','col_c'],ascending=[True,False]))

 

四、数据透视表

    像Excel的透视表一样透视数据,pandas里有个强大的函数pivot_table,我们同样可以选择行标签和列字段列表,选择需要的函数类型。

    先添加两列,再根据两列字段分组:​​​​​​​

data['newindex']=['test1','test2','test3','test2','test1']data['newcate']=['cate1','cate2','cate2','cate2','cate1']print(pd.pivot_table(data,index=['newcate','newindex'],aggfunc='count',                     values=['col_a','col_b','col_c','col_d','col_e']))

五、数据列名修改 

    修改列名,使用rename函数,传入字典,可进行一个或多个列同时更名;​​​​​​​

data.rename(columns={'col_a':'列a','col_b':'列b'},inplace=True)print(data)

    如果替换失败想提示一下,则使用error='raise',来抛出异常。比如对col_bb进行更名,但没有此列,则抛出异常​​​​​​​

data.rename(columns={'col_a':'列a','col_bb':'列b'},inplace=True,error='raise')print(data)
TypeError: rename() got an unexpected keyword argument "error"
Pandas中的DataFrame怎么在遍历的同时修改单元格内容? 在Pandas中,DataFrame是一个非常重要的数据结构,在对DataFrame进行遍历的同时修改其单元格内容是常见的需求。本文介绍几种在Pandas中遍历DataFrame并修改单元格的方法。 阅读详情

相关推荐

pandas学习笔记—指定位置插入行或列

处理dataframe数据时,经常碰到在指定位置插入行或列。 (1)插入行 插入行采用将dataframe先分开,然后再合并的方法 引用一下这边文章的例子:dataframe指定位置插入行 df = pd.DataFrame({ '动物' : ['狗','猫','兔'], '数量' : [ 3, 4, 6] }) df1 = df.loc[:0] df2 = df.loc[1:] print(

sunmingyang1987的博客 8737

pandas Dataframe实现批量修改值

pandas批量修改数据最详细讲解

vergil_zsh的博客 9673

利用Python进行Excel的合并(使用pandas)

利用Python进行Excel的合并(使用pandas) 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下。 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大佬提出建议~ 代码我自己已经用了一段时间,可以直接拿去用 主要功能 按行合并 ,即保留固定的表头(如前几行),实现多个Excel相同格式相同名字的表单按纵轴合并; 按列合并。 即保留固定的首列,实现多个Excel相同格式相同名字的表单按横轴合并; 表单集成

weixin_45923089的博客 4958

pandas列值根据字典批量替换

背景 一个数据中某一列的值需要根据某个字典批量映射为字典中的value。 方法1:pandas中的df.replace import pandas as pd import numpy as np df = pd.DataFrame({'col2': {0: 'a', 1: 2, 2: np.nan}, 'col1': {0: 'w', 1: 1, 2: 2}}) print("init df:") print(df) column_dict = {1: "A

ljp1919的专栏 1万+

如何使用Python的pandas库操作Excel

今天整理了一些学习笔记,最近因需要用Excel电子表格处理数据,使用了其它一些方式处理Excel文件数据。

nnn0245的博客 4861

Globus数据下载全攻略:从零配置到批量下载大文件(附常见问题解决)

本文详细介绍了Globus数据下载的全流程,从零配置到批量下载大文件的实用技巧,包括环境准备、高级传输策略、性能优化及常见问题解决方案。Globus作为科研数据的高效传输工具,通过并行流传输和自动校验技术,显著提升大规模数据传输的效率和可靠性。

u9v0w的博客 662

pandas批量修改列值_学习Python,像Excel一样使用pandas

点击上方公众号名称,继续点击右上角“设为星标”可抢先一步阅读推送文章哦一直以来,Excel一直作为一个高效的数据展示、处理、分析的工具被我们使用,但随着处理量增大,不可避免的遇到长时间等待响应或干脆“未响应”。因此,我们需要找到替代工具来避免此类问题,Python中的pandas是如何像Excel一样处理数据呢。先构造示例数据(python3):import p...

weixin_39592789的博客 7648

大华摄像头GB28181协议接入EasyCVR全流程(附常见错误排查)

本文详细阐述了大华摄像头通过GB28181协议接入EasyCVR视频管理平台的全流程,涵盖从核心原理、前期参数规划、Web界面配置到平台侧验证的完整步骤。重点针对网络端口、SIP参数配置等关键环节提供了深度排错指南,并总结了设备无法注册、在线不稳定、拉流失败等常见问题的排查思路与解决方案,旨在帮助安防工程师与系统集成商高效完成设备接入与调试。

weixin_29279153的博客 307

学excel还是学python_荐学习Python,像Excel一样使用pandas

学习更多,欢迎关注微信公众号:Excel办公小技巧一直以来,Excel一直作为一个高效的数据展示、处理、分析的工具被我们使用,但随着处理量增大,不可避免的遇到长时间等待响应或干脆“未响应”。因此,我们需要找到替代工具来避免此类问题,Python中的pandas是如何像Excel一样处理数据呢。先构造示例数据(python3):import pandas as pddata=pd.DataFrame...

weixin_39723899的博客 455

手把手教你用Matlab搞定GRACE RL06数据读取:冯伟老师工具箱无GUI版实战

本文详细介绍了如何使用Matlab处理GRACE RL06数据,重点解析了冯伟教授工具箱的无GUI版实战操作。通过环境配置、核心函数改造和批处理技巧,帮助科研工作者高效完成重力场数据的读取与分析,特别适合服务器集群环境下的批量处理需求。

weixin_29313817的博客 200

桌面云架构讲解(VDI、IDV、VOI/TCI、RDS)

什么是云桌面桌面云是虚拟化技术成熟后发展起来的一种应用,桌面云通常也称为云桌面、VDI等桌面云中的云一般指的是企业的数据中心,通过在数据中心的服务器上安装若干个虚拟机,这个虚拟机就是桌面;但是终端无法直接连接到这个虚拟机(云桌面),因此就需要通过技术将就虚拟机变为桌面云发放出来;发放出来之后只需要瘦客户端(PC、手机、瘦客户机等)连接到数据中心的云桌面服务器平台,最终就可以连接到桌面来进行使用云桌面的优势终端与数据信息分离,数据在后台集中处理和存储 ,数据实现统一管理。

m0_49864110的博客 3万+

Python学习笔记·第21天:跟董付国老师学Pandas——像操作Excel一样处理数据

Pandas三大数据结构Series:带标签的一维数组(像一列数据)时间序列:以日期时间为索引的SeriesDataFrame:带标签的二维表格(像Excel表格)Series核心操作支持NumPy的所有数学运算(逐元素运算)支持布尔索引条件筛选pipe()链式处理,apply()逐元素处理两个Series运算时,只计算共同索引对应的值时间序列生成连续日期时间resample()重新采样,按新时间间隔统计ohlc()像股票数据一样统计开高低收DataFrame创建。

oldcat的博客 244

LaTeX双栏浮动结构实战:用dblfloatfix解决跨栏图表排版难题

本文深入探讨了LaTeX双栏浮动结构在学术论文排版中的常见问题,特别是IEEE会议论文中的跨栏图表定位难题。通过介绍dblfloatfix包的整合解决方案,帮助用户实现精准的底部定位和浮动顺序保持,提升排版效率与质量。

weixin_30872499的博客 442

python pandas读取excel-Python使用Pandas读写EXCEL文件教程

欢迎,来自IP地址为:211.103.135.163 的朋友教程开始之前,我们需要首先了解一下什么是Excel,这有助于理解之后教程中的内容。什么是ExcelExcel 是微软出品的和款办公软件它能够创建和编辑以”xls”和”xlsx”为后缀的电子表格文件Excel文件可以在Windows、macOS、Android和iOS系统中使用自1993年发布5.0 版本以来,Excel 已经成为电子表格...

weixin_37988176的博客 7万+

海康视觉算法平台VisionMaster 4.3.0 C# 二次开发01 加载方案并获取结果

第一次使用海康视觉算法平台VisionMaster 4.3.0,项目中要使用这个平台进行视觉处理并获取结果。

StevenChen的博客 7871

使用Python的pandas库操作Excel

最近因需要用Excel电子表格处理数据,使用了其它一些方式处理Excel文件数据,这是学习笔记的整理。Python中有很多库可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等。本文主要介绍pandas。

cnds123的专栏 2万+

注意力机制篇 | YOLOv8改进之在C2f模块添加EMA注意力机制(附2种改进方法)

EMA(Exponential Moving Average)注意力机制是一种用于增强模型性能的注意力机制,它通过对模型的特征图进行加权平均来提取更有用的特征信息。具体来说,EMA注意力机制通过引入一个权重因子来调整特征图中每个位置的重要性,从而使模型能够更好地关注重要的特征。🌈

小哥谈 4180

使用pandas读取excel

本文为作者原创,未经允许不得擅自转载。 Excel是微软的经典之作,在日常工作中的数据整理、分析和可视化方面,有其独到的优势,尤其在你熟练应用了函数和数据透视等高级功能之后,Excel可以大幅度提高你的工作效率。但如果数据量超大,Excel的劣势也就随之而来,甚至因为内存溢出无法打开文件,后续的分析更是难上加难。那么,有什么更好的解决办法吗?工欲善其事,必先利其器,在这里我们介绍使用Python...

Kevin_Hoo的博客 27万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python之如何使用pandas操作Excel表

Python+Pandas+Excel对数据进行编辑保存

qq_14945475的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python使用pandas读取excel表格数据

导入 import pandas as pd 若使用的是Anaconda集成包则可直接使用,否则可能需要下载:pip install pandas 读取表格并得到表格行列信息 df=pd.read_excel('test.xlsx') height,width = df.shape print(height,width,type(df)) 表格如下: 得到如下输出,为一个4行5列的数据块: ...

SY的博客 10万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Python数据分析:pandas之Excel详解

pandas操作excel详解

人不风流枉少年 1万+

python 使用pandas 读写excel文件

现在本地创建一个excel表,以及两个sheet,具体数据如下:sheet1: sheet2:pandas.read_excel(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None)io:excel文件路径。sheet_name:返回指定的sheet。header:表头,默认值为0。也可以指定多行。当header取值为None时候data打印值最多,0相比None会少一行,1对比0又会在少一行。也就是说设置header为多

u010799534的博客 2万+

Python学习:如何使用pandas分析excel数据

1.问题 在python中,读写excel数据方法很多,比如xlrd、xlwt和openpyxl,实际上限制比较多,不是很方便。比如openpyxl也不支持csv格式。有没有更好的方法? 2.方案 更好的方法可以使用pandas,虽然pandas不是专门处理excel数据,但处理excel数据确实很方便。 本文使用excel的数据来自网络,数据内容如下: 2.1.安装 使用pip进行安装。 pip3 install pandas 导入pandas: import pandas as pd 下文使用pd

追风筝的人的专栏 4192
上一篇: Excel进行描述性统计分析
下一篇: index和roundup扩展数据行以完成筛选
TheLittlePython
博客等级 码龄9年 47粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值