"""
"""
import pandas as pd
# 将pandas作为第三方库导入,我们一般为pandas取一个别名叫做pd
pd.set_option('expand_frame_repr', False) # 当列太多时显示不清楚
# =====导入数据
#df = pd.read_excel(
# 该参数为数据在电脑中的路径,
# 要注意字符串转义符号 \ ,可以使用加r变为raw string或者每一个进行\\转义
# filepath_or_buffer=r'C:\Users\llj\Documents\Python\1.xlsx',
# 编码格式,不同的文件有不同的编码方式,一般文件中有中文的,编码是gbk,默认是utf8
# ** 大家不用去特意记住很多编码,我们常用的就是gbk和utf8,切换一下看一下程序不报错就好了
# encoding='gbk',
# 该参数代表跳过数据文件的的第1行不读入
#skiprows=1,
# nrows=15,
# parse_dates=['交易日期'],
# 将指定列设置为index。若不指定,index默认为0, 1, 2, 3, 4...
#index_col=['交易日期'],
#)
df=pd.read_excel('C:/Users/llj/Documents/Python/1.xlsx',index_col='股票简称')
print(df)
'''
股票代码 股票简称 现价(元) 涨跌幅(%)
0 810 创维数字 25.21 1.941
1 600256 广汇能源 12.50 7.852
2 2444 巨星科技 27.02 -0.111
3 2416 爱施德 10.44 -0.287
4 601155 新城控股 21.51 4.114
5 2831 裕同科技 30.19 2.757
6 1914 招商积余 17.50 1.449
7 603979 金诚信 21.25 7.378
8 2372 伟星新材 20.72 5.445
9 600153 建发股份 11.48 2.226'''
print('---------------查看数据------------------')
#.shape可以输出dataframe有多上行和列
print(df.shape) #(10, 4)
#如果只是查看dateframe有多少行
print(df.shape[0]) #10
#查看dateframe有多少列
print(df.shape[1]) #4
print(df.shape[-1]) #4
print('---')
#输出每一列的列标签
print(df.columns) #Index(['股票代码', '股票简称', '现价(元)', '涨跌幅(%)'], dtype='object')
#另一个方法是用for遍历
for i in df.columns:
print(i)
'''
股票代码
股票简称
现价(元)
涨跌幅(%)'''
print('---')
#输出每一行的行标签
print(df.index) #默认情况下是:RangeIndex(start=0, stop=10, step=1)
#如果在读取文件时,设置了index_col=参数,那么就是将指定的一列中的每个元素作为每一行的行标签
'''
Index(['创维数字', '广汇能源', '巨星科技', '爱施德', '新城控股', '裕同科技', '招商积余', '金诚信', '伟星新材',
'建发股份'],
dtype='object', name='股票简称')'''
print('---')
#遍历每一行的行标签
print(df.index)
'''
Index(['创维数字', '广汇能源', '巨星科技', '爱施德', '新城控股', '裕同科技', '招商积余', '金诚信', '伟星新材',
'建发股份'],
dtype='object', name='股票简称')'''
#同样可以使用for来遍历
for i in df.index:
print(i)
'''
创维数字
广汇能源
巨星科技
爱施德
新城控股
裕同科技
招商积余
金诚信
伟星新材
建发股份'''
print('---------')
#查看每一列数据的数据类型
''' 在读取文件时,parse_dates=''可以将指定列的数据类型设置为日期类型
此外读取的列中不包含index,如果前期将某一列设置为index,那么读取结果不会包含这一列'''
print(df.dtypes)
'''
股票代码 int64
现价(元) float64
涨跌幅(%) float64
dtype: object'''
print('---')
#查看前几行的数据,默认前5行,可以自定义参数
print(df.head())
'''
股票代码 现价(元) 涨跌幅(%)
股票简称
创维数字 810 25.21 1.941
广汇能源 600256 12.50 7.852
巨星科技 2444 27.02 -0.111
爱施德 2416 10.44 -0.287
新城控股 601155 21.51 4.114'''
print('---')
#查看最后几列的数据,默认最后5列
print(df.tail(1))
'''
股票代码 现价(元) 涨跌幅(%)
股票简称
建发股份 600153 11.48 2.226'''
print('---')
'''
查看随机几行的数据,或者随机查看百分之几十的数据,可以使用.sample()
两种查看方法使用的参数写法不同,前者是n=指定行数,后者是frac=比例,查看10%就将值设为0.1'''
print(df.sample(n=1))
''' 股票代码 现价(元) 涨跌幅(%)
股票简称
广汇能源 600256 12.5 7.852'''
print('---')
print(df.sample(frac=0.2))
'''
股票代码 现价(元) 涨跌幅(%)
股票简称
建发股份 600153 11.48 2.226
广汇能源 600256 12.50 7.852'''
print('---')
#.describe()可以查看查看每一列数据的总和信息,包括数量、中位数、标准差、最小值、最大值等
print(df.describe())
'''
股票代码 现价(元) 涨跌幅(%)
count 10.000000 10.000000 10.00000
mean 241833.000000 19.782000 3.27640
std 309455.907316 6.754672 2.86418
min 810.000000 10.440000 -0.28700
25% 2383.000000 13.750000 1.57200
50% 2637.500000 20.985000 2.49150
75% 600230.250000 24.285000 5.11225
max 603979.000000 30.190000 7.85200'''
print('-----------------修改print()的输出结果--------------------')
'''当列的数量过多时,print()之后默认会用...省略几列,使用pandas的.set_option('expand_frame_repr',False),可以print出所有的列'''
#pd.set_option('expand_frame_repr',False)
'''当要print的数据表的行数过多,pandas默认也会省略一些行,要是想要自己设定显示的行数,可以通过pandas的.set_option("display.max_rows",行数),如果设置显示200行,会print出前100行与后100行'''
#pd.set_option('display.max_rows',666)
'''要设置print出的小数的显示位数,比如原数据是6位小数,但只print2位小数,可以使用pandas的.set_option('precision',小数位数),这个功能只会影响显示效果,并不会修改原始数据'''
#pd.set_option('precision',1)
#pd.set_option('precision', 1) # 浮点数的精度
#print(pd)
'''但不知什么原因,我这里的输出结果是:
<module 'pandas' from 'D:\\1\\anaconda3\\lib\\site-packages\\pandas\\__init__.py'>'''
#选取指定的一列或多列
print(df['股票代码']) #会将index一起打印出来,此处index是股票简称
'''
股票简称
创维数字 810
广汇能源 600256
巨星科技 2444
爱施德 2416
新城控股 601155
裕同科技 2831
招商积余 1914
金诚信 603979
伟星新材 2372
建发股份 600153
Name: 股票代码, dtype: int64'''
print('---')
print(df[['股票代码','涨跌幅(%)']]) #选取多列还需要一个大的中括号
'''
股票代码 涨跌幅(%)
股票简称
创维数字 810 1.941
广汇能源 600256 7.852
巨星科技 2444 -0.111
爱施德 2416 -0.287
新城控股 601155 4.114
裕同科技 2831 2.757
招商积余 1914 1.449
金诚信 603979 7.378
伟星新材 2372 5.445
建发股份 600153 2.226'''
print('---')
#选取指定的一行
df=pd.read_excel('C:/Users/llj/Documents/Python/1.xlsx',index_col='股票简称')
print(df.loc['广汇能源'])
'''
股票代码 600256.000
现价(元) 12.500
涨跌幅(%) 7.852
Name: 广汇能源, dtype: float64'''
print('---')
#选取指定的多行
print(df.loc[['建发股份','广汇能源']])
'''
股票代码 现价(元) 涨跌幅(%)
股票简称
建发股份 600153 11.48 2.226
广汇能源 600256 12.50 7.852'''
print('---')
#选取连续的多列,类似于list的切片操作
print(df.loc['创维数字':'招商积余'])
'''
股票代码 现价(元) 涨跌幅(%)
股票简称
创维数字 810 25.21 1.941
广汇能源 600256 12.50 7.852
巨星科技 2444 27.02 -0.111
爱施德 2416 10.44 -0.287
新城控股 601155 21.51 4.114
裕同科技 2831 30.19 2.757
招商积余 1914 17.50 1.449'''
#选取所有的行,以及指定的多列
print(df.loc[:,'现价(元)':'涨跌幅(%)']) #:前后留空表示选取所有,逗号之后,'现价(元)':'涨跌幅(%)'表示选取从现价到涨跌幅所有的列
'''
现价(元) 涨跌幅(%)
股票简称
创维数字 25.21 1.941
广汇能源 12.50 7.852
巨星科技 27.02 -0.111
爱施德 10.44 -0.287
新城控股 21.51 4.114
裕同科技 30.19 2.757
招商积余 17.50 1.449
金诚信 21.25 7.378
伟星新材 20.72 5.445
建发股份 11.48 2.226'''
print('---')
#旋球指定的多行的某一列的数据
print(df.loc['广汇能源':'招商积余','涨跌幅(%)'])
'''
股票简称
广汇能源 7.852
巨星科技 -0.111
爱施德 -0.287
新城控股 4.114
裕同科技 2.757
招商积余 1.449
Name: 涨跌幅(%), dtype: float64'''
print('---')
#选取所有的行和所有的列
print(df.loc[:,:])
'''
股票代码 现价(元) 涨跌幅(%)
股票简称
创维数字 810 25.21 1.941
广汇能源 600256 12.50 7.852
巨星科技 2444 27.02 -0.111
爱施德 2416 10.44 -0.287
新城控股 601155 21.51 4.114
裕同科技 2831 30.19 2.757
招商积余 1914 17.50 1.449
金诚信 603979 21.25 7.378
伟星新材 2372 20.72 5.445
建发股份 600153 11.48 2.226'''
print('---')
#选取指定的某一行的指定的某一列
print(df.loc['广汇能源','现价(元)']) #12.5
#指定读取某一行的某一列的单个元素可以使用at
print(df.at['广汇能源','现价(元)']) #12.5
'''
loc为Selection by Label函数,即按标签选取数据,iloc为按位置选择数据,即第x行、第X列数据,只能输入整数型的参数(索引值)。
若要选取第一列的所有数据,可以输入df.iloc[:,0]也就是所有行的第0列,不接受字段名称作为参数,仅支持列字段的位置索引作为参数。
第一个参数是行索引,第二个参数是列索引,它们之间有个英文逗号,如果没有逗号就是默认为列为所有列,因为:表示全部可以省略不写
'''
print('---')
print(df.iloc[0]) #选取第一行,也就是引值为0的行
'''
股票代码 810.000
现价(元) 25.210
涨跌幅(%) 1.941
Name: 创维数字, dtype: float64'''
print('---')
print(df.iloc[1:3]) #选取索引值1到索引值3之前的行
'''
股票代码 现价(元) 涨跌幅(%)
股票简称
广汇能源 600256 12.50 7.852
巨星科技 2444 27.02 -0.111'''
print('---')
#选取所有行的第一列到第三列
print(df.iloc[:,0:3])
'''
股票代码 现价(元) 涨跌幅(%)
股票简称
创维数字 810 25.21 1.941
广汇能源 600256 12.50 7.852
巨星科技 2444 27.02 -0.111
爱施德 2416 10.44 -0.287
新城控股 601155 21.51 4.114
裕同科技 2831 30.19 2.757
招商积余 1914 17.50 1.449
金诚信 603979 21.25 7.378
伟星新材 2372 20.72 5.445
建发股份 600153 11.48 2.226'''
print('---')
#iloc读取所有的行和所有的列
print(df.iloc[:,:])
print('---')
#iloc的iat类似于loc的at,指定读取第几行第几列的元素(查找时不包含index)
print(df.iat[2,1])
'''不包含index行标签的索引值为2的行与索引值为1的列的单元格'''
# =====看数据
# print(df.shape) # 输出dataframe有多少行、多少列。
# print(df.shape[0]) # 取行数量,相应的列数量就是df.shape[1]
# print(df.columns) # 顺序输出每一列的名字,演示如何for语句遍历。
# print(df.index) # 顺序输出每一行的名字,可以for语句遍历。
# print(df.dtypes) # 数据每一列的类型不一样,比如数字、字符串、日期等。该方法输出每一列变量类型
# print(df.head(3)) # 看前3行的数据,默认是5。与自然语言很接近
# print(df.tail(3)) # 看最后3行的数据,默认是5。
# print(df.sample(n=3)) # 随机抽取3行,想要去固定比例的话,可以用frac参数
# print(df.describe()) # 非常方便的函数,对每一列数据有直观感受;只会对数字类型的列有效
# 对print出的数据格式进行修正
# pd.set_option('expand_frame_repr', False) # 当列太多时显示不清楚
# pd.set_option("display.max_rows", 1000) # 设定显示最大的行数
# pd.set_option('precision', 1) # 浮点数的精度
# print(df.head())
# 更多设置请见http://pandas.pydata.org/pandas-docs/stable/options.html
# =====如何选取指定的行、列
# print(df['开盘价']) # 根据列名称来选取,读取的数据是Series类型
# print(df[['交易日期', '收盘价']]) # 同时选取多列,需要两个括号,读取的数据是DataFrame类型
# print(df[['开盘价']])
# print(df)
# print(df.loc[['1999-11-11', '1999-11-25']])
# loc操作:通过label(columns和index的名字)来读取数据
# print(df.loc['1999-11-11']) # 选取指定的某一行,读取的数据是Series类型
# print(df.loc[['2000-03-30', '2000-07-31']]) # 选取指定的两行
# print(df.loc['2000-03-30': '2000-04-30']) # 选取在此范围内的多行,和在list中slice操作类似,读取的数据是DataFrame类型
# print(df.loc[:, '开盘价':'最低价']) # 选取在此范围内的多列,读取的数据是DataFrame类型
# print(df.loc['2000-03-30': '2000-07-31', '开盘价':'收盘价']) # 读取指定的多行、多列。逗号之前是行的范围,逗号之后是列的范围。读取的数据是DataFrame类型
# print(df.loc[:, :]) # 读取所有行、所有列,读取的数据是DataFrame类型
# print(df.at['2000-03-30', '开盘价']) # 使用at读取指定的某个元素。loc也行,但是at更高效。
# print(df.loc['2000-03-30', '开盘价'])
# iloc操作:通过position来读取数据
# print(df.iloc[0]) # 以index选取某一行,读取的数据是Series类型
# print(df.iloc[1:3]) # 选取在此范围内的多行,读取的数据是DataFrame类型
# print(df.iloc[:, 1:3]) # 选取在此范围内的多列,读取的数据是DataFrame类型
# print(df.iloc[1:3, 1:3]) # 读取指定的多行、多列,读取的数据是DataFrame类型
# print(df.iloc[:, :]) # 读取所有行、所有列,读取的数据是DataFrame类型
# print(df.iat[1, 3]) # 使用iat读取指定的某个元素。使用iloc也行,但是iat更高效。
# 哪里可以看到全部的函数?http://pandas.pydata.org/pandas-docs/stable/api.html
1 thought on “pandas查看选取数据”
发表回复
要发表评论,您必须先登录。
*