大神博客:https://blog.csdn.net/luanpeng825485697/article/details/80533003
1、Series()
一个series是一个一维的数据类型,其中每一个元素都有一个标签。类似于Numpy中元素带标签的数组。其中,标签可以是数字或者字符串。
如:
import pandas as pd
s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
#创建一个序列s,每个Series都会带有一个对应的index,用来标记不同的元素,index的内容可以是数字,也可以是字母,中文等
print(s)
输出结果:
2、DataFrame()
数据表格,类似一张二维的表格,它的每一列都是一个Series,是pandas的基本数据结构
import pandas as pd
d = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=['a', 'b', 'c'])
#创建一个表
print(d)
输出结果:
也可以用已有的序列来创建表格
import pandas as pd
s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
d2 = pd.DataFrame(s) #也可以用已有的序列来创建表格
print(d2)
输出结果:
3、DataFrame.iloc[start,stop,interval] 取表中的行
import pandas as pd
import xlrd
filename = 'E:/data/chapter5/demo/data/bankloan.xls' #文件路径
data = pd.read_excel(filename) #读取文件
print(data.iloc[0]) #取第一行数据
print(data.iloc[0:8]) #取0-7行数据
print(data.iloc[0:8:2]) #取第0,2,4,6行数据(行间隔为2)
print(data.iloc[:,:8]) #表示取8列数据,该表一供有9列
print(data.iloc[:,8]) #表示取第9列的数据(列从0开始计数)
4、DataFrame.as_matrix() 将表格转换位其编号数组表示
import pandas as pd
import xlrd
filename = 'E:/data/chapter5/demo/data/bankloan.xls' #文件路径
data = pd.read_excel(filename) #读取文件
x = data.iloc[0:8:2].as_matrix()
print(x)
5、修改Excel表格列名
import pandas as pd
import numpy as np
import xlwt
import xlrd
filename = filename = 'E:/data/chapter5/demo/data/sales_data.xls' #文件路径
output_filename = 'E:/data/chapter5/demo/data/sales_data_upgrate.xls' #输出文件路径
data = pd.read_excel(filename) #读取文件
#data_1 = data.drop('序号', 1) #删除列名为'序号'的那一列
#复制sales_data.xls表中的数据,建立新的excel表,新表各列列名分别为['weather', 'weekend', 'promotion', 'Sales_Volume']
data_2 =pd.DataFrame(data.iloc[:,:].as_matrix(), columns=['weather', 'weekend', 'promotion', 'Sales_Volume'])
print(pd.DataFrame(data_2).to_excel(output_filename)) #建立新表
5、常见基础操作
import pandas as pd
from pandas import Series, DataFrame
sdata1 = {'name':['a', 'b', 'c'], 'rank':[1, 2, 3], 'score':[99, 87, 45]}
data1 = DataFrame(sdata1)
print(data1)
print(data1.columns) # 输出data1列索引
data2 = DataFrame(sdata1,columns=['score','name','rank'])
print(data2)
data3 = DataFrame(sdata1,columns=['score','name','rank','class'],index=['1','2','3']) #index行索引
print(data3)
data5 = data3.reindex(['1','2','3','4'],fill_value=0) # 重置行索引,输出结果是索引变化后的结果,data3索引没有发生变化,这一步可以为数据增加行,fill_value间空数据填充0
print(data5)
data6 = data3.reindex(['1','2','3','4'],method = 'ffill') # ffill向前填充,bfill向后填充
print(data3['score']) # 返回列索引名为score的那一列数据
print(data3.ix['1'])
data4 = data2[data2['score']>60] # 内层返回为布尔值True, False,外层返回条件为真的数据
print(data4)
del data3['class'] # 删除data3的class列
print(data3)
6、删除指定行、列数据
import pandas as pd
from pandas import Series, DataFrame
sdata1 = {'name':['a', 'b', 'c'], 'rank':[1, 2, 3], 'score':[99, 87, 45]}
data1 = DataFrame(sdata1,index=['1','2','3'])
print(data1)
data2 = data1.drop('1') #删除索引为'1'的那一行数据
print(data2)
data3 = data1.drop('score',axis=1) # 删除列索引为score的那一列数据,axis=0按行,axis=1按列
print(data3)
7、读入、查看数据
import pandas as pd
from pandas import Series, DataFrame
filename = 'tips.csv'
data = pd.read_csv(filename)
#data = pd.read_table(filename, sep=',') #csv是以','分隔的数据
print(data)
print(data.head()) #默认输出前5行数据
print(data.tail()) #默认输出后5行数据
print(data.dtypes) #输出各列数据类型
print(data.describe()) #给出数据类型为数值型的各列数据计数、均值、标准差、最小值、1/4,1/2,3/4分位数、最大值
9、数据清洗—DataFrame中的空值处理
大神博客链接:https://blog.csdn.net/yuanxiang01/article/details/78738812
10、Pandas作图
import pandas as pd
from pandas import Series, DataFrame
from numpy import nan as NaN
import numpy as np
import matplotlib.pyplot as plt
filename = 'tips.csv'
data = pd.read_csv(filename)
print(data)
count = pd.crosstab(data.sex, data.day)
print(count)
count.T.plot(kind='bar') # kind='bar'柱状图,T将表行列转置
plt.show()
data['data_pct'] = data['tip']/data['total_bill'] # 在data数据表中增加一列,列索引为:data_pct,数据为公式所求
print(data.head())
data['data_pct'].hist(bins=40) # 横坐标是data_pct的值,纵坐标是频率,bins=n是将数据从最大值到最小值分成n个条
plt.show()
11、DataFrame索引总结
loc、iloc、ix对于列的索引跟对行的索引是一样的,loc只能通过选取列标签索引数据,iloc只能通过选取列位置编号索引数据,ix 既可以通过行标签索引数据,也可以通过行位置编号索引数据,还可以两者混用,爱无止境。
区别不在于用哪种方法,而是通过标签索引将会将切片末端包含进去,通过位置编号索引不会将切片末端包含进去。同样的都是第一行到第四行,通过loc就会把1,2,3,4行都提取出来,通过iloc就只能把1,2,3行提取出来。ix方法也是一样,只是方法不同而已。
大神博客:https://blog.csdn.net/qq_35318838/article/details/80271869
https://blog.csdn.net/wr339988/article/details/65446138
import pandas as pd
from pandas import Series, DataFrame
from numpy import nan as NaN
import numpy as np
import matplotlib.pyplot as plt
filename = 'tips.csv'
data = pd.read_csv(filename)
# print(data.dtypes)
print(data['sex']) # 输出表格索引为'sex'的那一列数据
print(data[0:3]) # 输出第0、1、2行数据,注意:第三行数据补输出
print(data.at[1,'sex']) # 输出行索引为1,列索引为'sex'的数据,注意:.at只能选择某一个数据
print(data.iat[4,4]) # 注意:.at只能选择某一个数据
print(data.loc[0:4,['sex','size']]) # 输出列索引为'sex','size'的所有数据,注意:.loc[]选择数据和[]选择数据不同,.loc[]会包含最后一个数字行/列的数据;loc只能通过选取行标签索引数据,如果用到了行(列)的位置索引就会报错
print(data.iloc[0,2]) # 输出行索引位置为0,列索引位置为2的数据,注意:行列数据起始索引均为0
print(data.iloc[0:4,1:2]) # 输出行索引位置为0、1、2、3、4,列索引位置为2,3的数据