pandas学习一

series [ˈsɪəriːz] 系列 级数

创建pandas对象方法及数据访问

import pandas as pd
s1 = pd.Series([1, 2, 3]) # 默认创建索引
print(s1)
print(s1.index)
s2 = pd.Series({‘山东’: 1.1, ‘北京’: 1.2}) # 隐式指定索引和数据
s3 = pd.Series(data=[2.4, 5.6], index=[‘天津’, ‘上海’]) # 显示指定索引和数据
print(s2)
print(s3)
print(s2.index)

可以用整数索引或者标签索引访问数据,如下所示

print(s2[0])
print(s2[‘山东’])

Series如何增加元素,Series对象元素就是和字典一样

import pandas as pd
s1 = pd.Series({‘山东’: 1.1, ‘北京’: 1.2})
print(s1)
d1 = {‘山东’: 1.1, ‘北京’: 1.2}
print(d1)
d1.update({‘山西’: 0.3}) # 在字典中,用update增加一个键值对
print(d1)
s2 = s1.append(pd.Series({‘山西’: 0.3})) # 用append增加元素,但必须要用pd.Series构建
print(s1) # s1没有变化
print(s2) # s2从新创建了一个对象
print(s2[‘山西’])
newSeries = pd.Series({‘陕西’: 0.55, ‘广州’: 0.7})
s3 = s2.append(newSeries) # 用一个已有eries对象作为参数添加元素
print(s3)

Series如何删除元素(增加或删除,都会生成一个新的pandas对象)

import pandas as pd
d1 = {‘山东’: 1.1, ‘北京’: 1.2}

d1.pop(‘北京’) # 用pop函数删除一个字典元素

print(d1)

s1 = pd.Series(d1) # 直接用字典创建一个pandas对象
print(s1)
s3 = s1.drop(‘北京’) # 用drop方法删除一个pandas元素,也必须生成一个新的pandas对象
print(s3)
s4 = s1.append(pd.Series({‘北京’: 1.3})) # pandas对象元素可以重复
print(s4)
s5 = s4.drop(‘北京’) # 都会删除
print(s5)
print(‘北京’ in s4.index) # 北京是否在s4的里面,如果有,返回true,否则,返回false
if ‘山西’ in s4.index: # 删除的时候,需要判断,这样就不会抛出异常
s4.drop(‘山西’)

Series如何修改或者访问元素

import pandas as pd
d1 = {‘山东’: 1.1, ‘北京’: 1.5}

print(d1)

d1[‘山东’] = 1.8 # 字典元素修改

print(d1)

s1 = pd.Series(d1)
print(s1)
s1[‘山东’] = 1.8 # 修改pandas对象元素,不会创建新的对象
print(s1)

支持两种索引方法: 整数索引(相当于数组下标0,1,2…),标签索引(相当于字典的key)

print(s1[0])
print(s1[‘山东’])

dataframe对象两种构建方式,列表构建和字典构建

import pandas as pd

用列表构建

df = pd.DataFrame([[‘小红’, 2, 5],
[‘小张’, 7, 1]])
print(df)
df = pd.DataFrame([[‘小红’, 2, 5],
[‘小张’, 7, 1]], columns=[‘姓名’, ‘年龄’, ‘身高’]) # 添加列标签
df = pd.DataFrame([[‘小红’, 2, 5],
[‘小张’, 7, 1]], columns=[‘姓名’, ‘年龄’, ‘身高’], index=[‘page0’, ‘page2’]) # 添加行,列标签

用字典方式生成数据表(key+列表的方式)

df = pd.DataFrame({‘姓名’: [‘小红,小张’],
‘年龄’: [3, 5],
‘身高’: [1.43, 1.23]}, index=[‘page0’, ‘page1’])
print(df)

dataframe读取文件,并做相应处理

import pandas as pd
df = pd.read_csv(‘IMDB-Movie-Data.csv’)

print(df)

print(df.shape)

print(df.columns)

print(df.index)

print(df.head())

print(df.tail())

print(df.info())
print(df.describe())

给dataframe增加数据:方法1)增加一个series,2)增加一个dataframe

import pandas as pd

方法1)增加一个series

df = pd.DataFrame({‘姓名’: [‘小红,小张’],
‘年龄’: [3, 5],
‘身高’: [1.43, 1.23]}, index=[‘page0’, ‘page1’])
s1 = pd.Series({“姓名”: ‘jiang’, “年龄”: 4, “身高”: 1.56})

s1要合并到df中去,用append方法

s1.name = ‘index2’ # 这个name要转为行标签
df2 = df.append(s1)
print(df2)

给dataframe增加数据:方法1)增加一个series,2)增加一个dataframe

import pandas as pd

方法1)增加一个dataframe(分为行和列)

df = pd.DataFrame({‘姓名’: [‘小红,小张’],
‘年龄’: [3, 5],
‘身高’: [1.43, 1.23]}, index=[‘page0’, ‘page1’])
print(df)
df2 = df.append(df) # 行合并
print(df2)
df[‘分数’] = [69, 30] # 末尾增加1列
print(df)
df.insert(2, ‘籍贯’, [‘河北’, ‘莫旗’]) # insert直接按原有的数据框对象上
print(df)

给dataframe删除数据:删除某行,2)删除某列

import pandas as pd

方法1)增加一个dataframe(分为行和列)

df = pd.DataFrame({‘姓名’: [‘小红’, ‘小张’],
‘年龄’: [3, 5],
‘身高’: [1.43, 1.23]}, index=[‘page0’, ‘page1’])
df[‘分数’] = [69, 30] # 末尾增加1列
df.insert(2, ‘籍贯’, [‘河北’, ‘莫旗’]) # insert直接按原有的数据框对象上
print(df)
df2 = df.drop(‘年龄’, axis=1) # 删除一列,生成新的对象,并没有删除原有df对象
print(df2)
df3 = df2.drop(‘page0’, axis=0) # 删除一行
print(df3)

给访问dataFrame

使用场景: 1)访问某列或者某几列; 2)访问某行或者某几行;2)筛选出满足条件的行

import pandas as pd
df_imdb = pd.read_csv(‘IMDB-Movie-Data.csv’)
print(df_imdb)
print(‘*’ * 30)

访问某一列数据两种方法(iloc或者loc函数)

print(df_imdb.iloc[:, 1]) # 返回title列,用iloc函数,用的是【整数】索引
print(df_imdb.loc[:, ‘Title’]) # 返回title列,用loc函数,用的是【标签】索引

访问多列的方法

print(df_imdb.iloc[:, :3]) # 访问前3列
print(df_imdb.loc[:, [‘Title’, ‘Rank’, ‘Genre’]]) # 访问前3列

访问第一行数据

print(df_imdb.iloc[0]) # 整数索引
print(df_imdb.loc[0]) # 标签索引,注意,这个标签只不过是数值,但和数值表达的意思是不同的

访问5~10行数据

print(df_imdb.iloc[5:10])
print(df_imdb.loc[5:10])

根据列,筛选出满足条件的行 2014年上映并大于7.0的电影

df2 = df_imdb[(df_imdb[‘Year’] == 2014) & (df_imdb[‘Rating’] > 7.0)] # 必须加括号
print(df2.shape)

修改dataFrame数据

使用场景: 1)修改某个单元格; 2)修改某行;2)修改某列

import pandas as pd
df_imdb = pd.read_csv(‘IMDB-Movie-Data.csv’)
print(df_imdb)
print(‘*’ * 30)

修改某个单元格

df_imdb.loc[0, ‘Title’] = ‘Guardians of the Galaxy2’
print(df_imdb)

按条件修改某一行(如修改title)

df_s = df_imdb[(df_imdb[‘Year’] == 2014) & (df_imdb[‘Rating’] > 7)]
print(df_s.shape)
df_imdb.loc[(df_imdb[‘Year’] == 2014) & (df_imdb[‘Rating’] > 7),
‘Title’] += “-1” # loc方法,原数据会改变
print(df_imdb)

修改某一列

df_imdb[‘Title’] += ‘-1’
print(df_imdb)

dataframe行级遍历的两种方法 iterrows itertuples

import pandas as pd

df_imdb = pd.read_csv(‘IMDB-Movie-Data.csv’)
print(df_imdb.head())
print(‘*’ * 30)

def iterRowsBy1():
for i, row in df_imdb.iterrows(): # 执行效率低
print(i)
print(row)

iterRowsBy1()

def iterRowsBy2():
for nt in df_imdb.itertuples(): # 执行效率高
print(nt)

iterRowsBy2()

你可能感兴趣的:(pandas,学习)