import pandas as pd
import numpy as np
下载pandas,在PyCharm里面的Terminal里输入pip install pandas就行了
Series:索引(默认是0开始) 加 值 就是一行
c = pd.Series(['wo','de','zuguo','beijing','zhongguo'])
print(c)
0 wo
1 de
2 zuguo
3 beijing
4 zhongguo
dtype: object
打印出来的series自动添加了索引
也可以自己指定索引,这就是使用字典创建series
cities = {'beijing':50000.0,'shanghai':2626262,'shenzhen':66626,'hangzhou':None}
beijing 50000.0
shanghai 2626262.0
shenzhen 66626.0
hangzhou NaN
dtype: float64
还有一种就是使用ndarry创建
s = pd.Series(np.random.random(5),index=['a','b','c','d','e'])
a 0.858003
b 0.977923
c 0.741335
d 0.110244
e 0.927743
dtype: float64
i
info = {"姓名":"小王","性别":"男","年龄":30,"身高":150,"体重":120}
s = pd.Series(info)
print(s.index)
print(s.values)
更改索引
s.rename(index ={"姓名":'name', "性别":'sex', "年龄":'age',"身高": 'height', "体重":'weight'},inplace=True)
DataFrame
创建dataframe:
data = {
's':['O','O','O','Ne','Ne'],
'year':[2010,2011,2002,2001,2002],
'p':[1.5,1.7,3.6,2.4,2.9]
}
df = pd.DataFrame(data)
df
#输出
p s year
0 1.5 O 2010
1 1.7 O 2011
2 3.6 O 2012
3 2.4 Ne 2021
4 2.9 Ne 2022
DataFrame的行索引是index,列索引是columns,我们可以在创建DataFrame时指定索引的值:
df = pd.DataFrame(data,index=['one','two','three','four','five'],columns=['year','state','pop','debt'])
df
#输出
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
删除NaN数据
how = “all”:指的是,那一行所有数据都为空 才删除
how = “any”,指的是哪一行只要有一个为空。就删除
默认删除的是行数据,指定axis = 1,才是删除列
is np.nan :判断元素的数据是否是NaN,不是用等号,使用is
修改dataframe
df.head(n) 默认前五行
df.yaer ,查看列的数据 取多个列: df[['year','city']]
取特定 行和列
df.loc['a','city']
取整行数据
df.loc['a']
取整列数据,前面的行为空,
df.loc[,'city']
可以使用索引 来取值
df,iloc[]
习题:
习题1:利用Faker库 和字典数据结构,构造100条任务数据并生成一个dataframe,获取dataframe的index、columns、和values。把列名都改为中文,统计df中的男女个数
关于Faker库
from faker import Faker
生成客户端,利于爬虫
print(faker.user_agent())
infos = {'人名':[],'地址':[],'手机号':[],'出生日期':[],'姓别':[]}
for i in range(100):
p = faker.simple_profile()
infos['人名'].append(p["name"])
infos['地址'].append(p["address"])
infos['手机号'].append(faker.phone_number)
infos['出生日期'].append(p["birthdate"])
infos['姓别'].append(p["sex"])
peoples = pd.DataFrame(infos)
faker.simple_profile()
直接就生成一个人的基本信息,类型是字典形式 <class ‘dict’>
{
'username': 'yangyan',
'name': '吴静',
'sex': 'F',
'address': '台湾省潜江市黄浦太原街C座 399301',
'mail': 'tangwei@yahoo.com',
'birthdate': datetime.date(1939, 8, 25)
}
将某很多连续的行,指定一列的值修改为NaN
df.loc[10:26,'petal_length'] = None
将NaN修改为1
df.fillna(1,inplace=True)
删除NaN的值
df.dropna(axis=0,how='all',inplace=True)
使索引重新从0 开始递推:
df.reset_index(drop=True,inplace=True)